// ==UserScript== // @name 网盘文件批量重命名 // @namespace cloud-disk-plugin // @version 0.0.1-beta // @author realafei // @description 网盘文件批量重命名,支持百度网盘 // @license MIT // @icon data:image/png;base64,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 // @match https://pan.baidu.com/disk/main* // @require https://cdn.jsdelivr.net/npm/vue@3.4.15/dist/vue.global.prod.js // @require https://cdn.jsdelivr.net/npm/systemjs@6.14.3/dist/system.min.js // @require https://cdn.jsdelivr.net/npm/systemjs@6.14.3/dist/extras/named-register.min.js // @require data:application/javascript,%3B(typeof%20System!%3D'undefined')%26%26(System%3Dnew%20System.constructor())%3B // @grant none // @downloadURL none // ==/UserScript== (a=>{if(typeof GM_addStyle=="function"){GM_addStyle(a);return}const r=document.createElement("style");r.textContent=a,document.head.append(r)})(' .fade-enter-from,.fade-leave-to{opacity:0}.fade-enter-to,.fade-leave-from{opacity:1}.fade-enter-active,.fade-leave-active{transition:opacity var(--transition-default)}.fade-bottom-enter-from,.fade-bottom-leave-to{opacity:0;transform:translateY(10%)}.fade-bottom-enter-to,.fade-bottom-leave-from{opacity:1;transform:none}.fade-bottom-enter-active,.fade-bottom-leave-active{transition:opacity .3s,transform .3s ease}:root{--color-white: #ffffff;--color-black: #000000;--color-primary: var(--color-primary-500);--color-primary-50: #eff8ff;--color-primary-100: #def1ff;--color-primary-200: #b6e4ff;--color-primary-300: #75d0ff;--color-primary-400: #2cb9ff;--color-primary-500: #06a7ff;--color-primary-600: #007fd4;--color-primary-700: #0065ab;--color-primary-800: #00558d;--color-primary-900: #064774;--color-primary-950: #042d4d;--color-gray: var(--color-gray-500);--color-gray-50: #f6f7f9;--color-gray-100: #edeef1;--color-gray-200: #d7dae0;--color-gray-300: #b4bbc5;--color-gray-400: #8b95a5;--color-gray-500: #636d7e;--color-gray-600: #576072;--color-gray-700: #474e5d;--color-gray-800: #3d434f;--color-gray-900: #363b44;--color-gray-950: #24262d;--color-red: var(--color-red-500);--color-red-50: #fef2f2;--color-red-100: #fee2e2;--color-red-200: #fecaca;--color-red-300: #fca5a5;--color-red-400: #f87171;--color-red-500: #ef4444;--color-red-600: #dc2626;--color-red-700: #b91c1c;--color-red-800: #991b1b;--color-red-900: #7f1d1d;--color-red-950: #450a0a;--gutter: 10px;--shadow: 0 3px 10px 0 rgba(0, 0, 0, .2);--shadow-md: 0 5px 16px 0 rgba(0, 0, 0, .3);--transition-all: all var(--transition-default);--transition-default: var(--transition-duration) var(--transition-timing-function);--transition-duration: .3s;--transition-timing-function: ease-in-out}.material-input[data-v-10b0d85a]{color:var(--color-gray);display:block;position:relative;font-size:14px;box-sizing:border-box;margin-top:.5rem;padding-top:.75rem;margin-bottom:.5rem;border-bottom:1px solid var(--color-gray);background-color:transparent}.material-input.is-focus[data-v-10b0d85a]{border-bottom-color:var(--color-primary)}.material-input_input[data-v-10b0d85a],.material-input_textarea[data-v-10b0d85a]{color:var(--color-gray-700);width:100%;min-height:1.25rem;transition:border-bottom-color var(--transition-default);box-sizing:border-box;line-height:1.25rem;padding-top:.25rem;border-bottom:1px solid transparent;padding-bottom:.25rem;background-color:inherit}.material-input.is-focus .material-input_input[data-v-10b0d85a],.material-input.is-focus .material-input_textarea[data-v-10b0d85a]{border-bottom-color:var(--color-primary)}.material-input_label[data-v-10b0d85a]{top:calc(100% - 1.375rem);left:.5rem;color:inherit;position:absolute;transition:top var(--transition-default),left var(--transition-default),color var(--transition-default),font-size var(--transition-default);line-height:1;background-color:transparent}.material-input.is-focus .material-input_label[data-v-10b0d85a]{color:var(--color-primary-600)}.material-input.is-active .material-input_label[data-v-10b0d85a]{top:0;left:0;font-size:.75rem}.material-radio[data-v-89299f62]{cursor:pointer}.material-radio.radio[data-v-89299f62]{display:inline-flex;min-width:1em;min-height:1em;white-space:nowrap;align-items:center}.material-checkbox+.material-radio[data-v-89299f62],.material-radio.radio+.material-radio.radio[data-v-89299f62]{margin-left:.5em}.material-radio.radio .material-radio-input[data-v-89299f62]{width:1em;height:1em;display:inline-block;position:relative}.material-radio.radio .material-radio-input[data-v-89299f62]:before{width:100%;height:100%;border:2px solid var(--color-primary);content:"";display:block;box-sizing:border-box;transition:var(--transition-all);border-radius:50%;background-color:transparent}.material-radio.radio .material-radio-input[data-v-89299f62]:after{top:50%;left:50%;width:0;height:0;content:"";display:block;position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;transition:var(--transition-all);border-radius:50%;background-color:var(--color-primary)}.material-radio.radio.is-checked .material-radio-input[data-v-89299f62]:after{width:50%;height:50%}.material-radio.radio .material-radio-input-original[data-v-89299f62]{top:0;left:0;width:0;height:0;margin:0;z-index:-1;outline:none;opacity:0;position:absolute}.material-radio.radio .material-radio-label[data-v-89299f62]{margin-left:.5em}.material-radio.button[data-v-89299f62]{color:var(--color-gray-900);height:auto;border:1px solid var(--color-gray-300);padding:8px 15px;transition:var(--transition-all);line-height:1;border-radius:var(--gutter);background-color:var(--color-white)}.material-radio.button[data-v-89299f62]:has(+.material-radio.button){border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.material-radio.button+.material-radio.button[data-v-89299f62]{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.material-radio.button.is-checked[data-v-89299f62]{color:var(--color-gray-50);border-color:var(--color-primary);background-color:var(--color-primary)}.material-radio.button .material-radio-input-original[data-v-89299f62]{top:0;left:0;width:0;height:0;margin:0;z-index:-1;outline:none;opacity:0;position:absolute}*:has(>.material-loading){position:relative}.material-loading[data-v-9bee3f9f]{top:0;left:0;right:0;bottom:0;margin:0;z-index:2000;display:flex;position:absolute;transition:opacity var(--el-transition-default);align-items:center;justify-content:center;background-color:#ffffffe6}.material-loading-spinner[data-v-9bee3f9f]{width:2em;height:2em;animation:spin-9bee3f9f 1s linear infinite}.material-loading-spinner-path[data-v-9bee3f9f]{stroke:var(--color-primary);animation:loading-dash-9bee3f9f 1.5s ease-in-out infinite;stroke-width:.2em;stroke-linecap:round;stroke-dasharray:90,150;stroke-dashoffset:0}@keyframes spin-9bee3f9f{to{transform:rotate(1turn)}}@keyframes loading-dash-9bee3f9f{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.material-checkbox[data-v-fb8b54b7]{cursor:pointer;display:inline-flex;min-width:1em;min-height:1em;white-space:nowrap;align-items:center}.material-radio+.material-checkbox[data-v-fb8b54b7],.material-checkbox+.material-checkbox[data-v-fb8b54b7]{margin-left:.5em}.material-checkbox-input[data-v-fb8b54b7]{width:1em;height:1em;display:inline-block;position:relative}.material-checkbox-input[data-v-fb8b54b7]:before{width:100%;height:100%;content:"";display:block;box-sizing:border-box;transition:var(--transition-all);border-top:2px solid var(--color-primary);border-left:2px solid var(--color-primary);border-right:2px solid var(--color-primary);border-bottom:2px solid var(--color-primary);border-radius:2px;background-color:transparent}.material-checkbox .material-checkbox-input[data-v-fb8b54b7]:after{top:50%;left:50%;width:0;height:0;content:"";display:block;position:absolute}.material-checkbox:not(.is-indeterminate) .material-checkbox-input[data-v-fb8b54b7]:after{top:0;left:30%;width:40%;height:80%;content:"";display:block;position:absolute;transform:rotate(40deg);box-sizing:border-box;transition:var(--transition-all);border-right:2px solid transparent;border-bottom:2px solid transparent}.material-checkbox.is-checked .material-checkbox-input[data-v-fb8b54b7]:before{background-color:var(--color-primary)}.material-checkbox.is-checked:not(.is-indeterminate) .material-checkbox-input[data-v-fb8b54b7]:after{border-right-color:#fff;border-bottom-color:#fff}.material-checkbox.is-indeterminate .material-checkbox-input[data-v-fb8b54b7]:before{background-color:var(--color-primary)}.material-checkbox.is-indeterminate .material-checkbox-input[data-v-fb8b54b7]:after{top:50%;left:50%;width:60%;height:2px;content:"";display:block;position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;transition:var(--transition-all);background-color:var(--color-white)}.material-checkbox-input-original[data-v-fb8b54b7]{top:0;left:0;width:0;height:0;margin:0;z-index:-1;outline:none;opacity:0;position:absolute}.material-checkbox-label[data-v-fb8b54b7]{margin-left:.5em}.main-panel[data-v-65bcf42e]{top:0;left:0;right:0;z-index:10000;display:flex;position:fixed;align-items:end;justify-content:center}.main-panel[data-v-65bcf42e]:has(div){height:100vh}.main-panel-mask[data-v-65bcf42e]{width:100vw;height:100vh;position:absolute;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.main-panel-content[data-v-65bcf42e]{z-index:1;display:grid;padding:var(--gutter);grid-gap:var(--gutter);overflow:hidden;max-width:100vw;min-width:768px;min-height:60vh;max-height:90vh;box-sizing:border-box;box-shadow:var(--shadow);background-color:var(--color-white);grid-template-rows:auto 1fr;border-top-left-radius:var(--gutter);border-top-right-radius:var(--gutter)}.main-panel-content-header[data-v-65bcf42e]{padding:var(--gutter);border-radius:var(--gutter);background-color:var(--color-gray-100)}.main-panel-content-header-form[data-v-65bcf42e]{display:grid;grid-gap:var(--gutter);grid-template-columns:1fr 1fr}.main-panel-content-header-ctrl[data-v-65bcf42e]{display:grid;grid-gap:var(--gutter);margin-top:var(--gutter);grid-template-columns:1fr auto auto}.main-panel-content-header-ctrl-option[data-v-65bcf42e]{display:flex;align-items:center}.main-panel-content-header-ctrl-confirm-button[data-v-65bcf42e]{color:var(--color-primary-700);height:auto;padding:8px 15px;transition:var(--transition-all);line-height:1;border-color:transparent;border-radius:var(--gutter);background-color:transparent}.main-panel-content-header-ctrl-confirm-button[data-v-65bcf42e]:hover{color:var(--color-primary-50);background-color:var(--color-primary-700)}.main-panel-content-header-ctrl-confirm-button[disabled][data-v-65bcf42e]{color:var(--color-gray-500);cursor:not-allowed}.main-panel-content-header-ctrl-confirm-button[disabled][data-v-65bcf42e]:hover{color:var(--color-gray-700);background-color:var(--color-gray-100)}.main-panel-content-header-ctrl-reset-button[data-v-65bcf42e]{color:var(--color-gray-500);height:auto;padding:8px 15px;transition:var(--transition-all);line-height:1;border-color:transparent;border-radius:var(--gutter);background-color:transparent}.main-panel-content-header-ctrl-reset-button[data-v-65bcf42e]:hover{color:var(--color-gray-50);background-color:var(--color-gray-300)}.main-panel-content-body[data-v-65bcf42e]{overflow:auto}.main-panel-content-body-grid[data-v-65bcf42e]{display:grid;grid-gap:10px;font-size:12px;line-height:1;grid-template-columns:auto minmax(200px,1fr) auto minmax(200px,1fr)}.main-panel-content-body-grid-item[data-v-65bcf42e]{display:contents;color:var(--color-gray)}.main-panel-content-body-grid-item.is-change[data-v-65bcf42e]{color:var(--color-gray-900)}.main-panel-content-body-grid-item.is-error[data-v-65bcf42e]{color:var(--color-red)}.main-panel-content-body-grid-item:not(.is-checked) .main-panel-content-body-grid-item-new_file_name[data-v-65bcf42e]{color:var(--color-gray-300)}.enter-component[data-v-3ff86bbd]{margin-right:16px}.enter-component-button[data-v-3ff86bbd]{color:#fff;border:none;height:32px;cursor:pointer;padding:8px 24px;font-size:14px;transition:var(--transition-all);line-height:1;font-weight:700;white-space:nowrap;border-radius:16px;background-image:linear-gradient(135deg,var(--color-primary-400) 0%,var(--color-primary-600) 100%)}.enter-component-button[data-v-3ff86bbd]:hover{background-image:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-700) 100%)}.enter-component-button[data-v-3ff86bbd]:active{background-image:linear-gradient(135deg,var(--color-primary-600) 0%,var(--color-primary-800) 100%)}.enter-component-button[disabled][data-v-3ff86bbd]{color:var(--color-primary-700);cursor:not-allowed;background-image:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-300) 100%)} '); System.addImportMap({ imports: {"vue":"user:vue"} }); System.set("user:vue", (()=>{const _=Vue;('default' in _)||(_.default=_);return _})()); System.register("./__entry.js", ['./__monkey.entry-Cb9Yaawu.js', 'vue'], (function (exports, module) { 'use strict'; return { setters: [null, null], execute: (function () { }) }; })); System.register("./__monkey.entry-Cb9Yaawu.js", ['vue'], (function (exports, module) { 'use strict'; var defineComponent, computed, ref, onMounted, inject, onUnmounted, defineAsyncComponent, createApp, nextTick, openBlock, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, withDirectives, vModelDynamic, normalizeStyle, vModelText, createElementVNode, Fragment, createTextVNode, renderSlot, resolveComponent, createBlock, Teleport, createVNode, Transition, withCtx, renderList, resolveDynamicComponent, pushScopeId, popScopeId; return { setters: [module => { defineComponent = module.defineComponent; computed = module.computed; ref = module.ref; onMounted = module.onMounted; inject = module.inject; onUnmounted = module.onUnmounted; defineAsyncComponent = module.defineAsyncComponent; createApp = module.createApp; nextTick = module.nextTick; openBlock = module.openBlock; createElementBlock = module.createElementBlock; normalizeClass = module.normalizeClass; toDisplayString = module.toDisplayString; createCommentVNode = module.createCommentVNode; withDirectives = module.withDirectives; vModelDynamic = module.vModelDynamic; normalizeStyle = module.normalizeStyle; vModelText = module.vModelText; createElementVNode = module.createElementVNode; Fragment = module.Fragment; createTextVNode = module.createTextVNode; renderSlot = module.renderSlot; resolveComponent = module.resolveComponent; createBlock = module.createBlock; Teleport = module.Teleport; createVNode = module.createVNode; Transition = module.Transition; withCtx = module.withCtx; renderList = module.renderList; resolveDynamicComponent = module.resolveDynamicComponent; pushScopeId = module.pushScopeId; popScopeId = module.popScopeId; }], execute: (function () { var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; const is = (val, type) => Object.prototype.toString.call(val) === `[object ${type}]`; const isString = (val) => is(val, "String"); const isNull = (val) => val === null; const isUndefined = (val) => val === void 0; const isVoid = (val) => isNull(val) || isUndefined(val); const isEmpty = (val) => isVoid(val) || val === ""; const _sfc_main$5 = defineComponent({ name: "MaterialInput", props: { modelValue: { type: [String, Number], default: "" }, label: { type: String, default: "" }, type: { type: String, default: "textarea" }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, placeholder: { type: String, default: "" } }, emits: ["update:modelValue"], setup(props, { emit }) { const computedValue = computed({ get: () => props.modelValue, set: (val) => emit("update:modelValue", val) }); const computedPlaceholder = computed( () => props.label ? "" : props.placeholder ); const isFocus = ref(false); const isActive = computed( () => !isEmpty(props.modelValue) || isFocus.value ); const inputRef = ref(); const textareaRef = ref(); const textareaStyle = ref({}); const onInputBlur = () => { isFocus.value = false; }; const onInputFocus = () => { isFocus.value = true; }; const onTextareaBlur = () => { isFocus.value = false; calcTextareaStyle(); }; const onTextareaFocus = () => { isFocus.value = true; calcTextareaStyle(); }; const onTextareaInput = () => { calcTextareaStyle(); }; const calcTextareaStyle = () => { textareaStyle.value.height = "auto"; nextTick(() => { var _a; textareaStyle.value.height = ((_a = textareaRef.value) == null ? void 0 : _a.value) ? textareaRef.value.scrollHeight + 1 + "px" : "auto"; }); }; onMounted(() => { if (props.type === "textarea") { onTextareaInput(); } }); return { computedValue, computedPlaceholder, isFocus, isActive, inputRef, textareaRef, textareaStyle, onInputBlur, onInputFocus, onTextareaBlur, onTextareaInput, onTextareaFocus }; } }); const _export_sfc = exports("_", (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }); const _hoisted_1$4 = { key: 0, class: "material-input_label" }; const _hoisted_2$4 = ["type", "value", "disabled", "readonly", "placeholder"]; const _hoisted_3$4 = ["disabled", "readonly", "placeholder"]; function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("label", { class: normalizeClass(["material-input", { "is-focus": _ctx.isFocus, "is-active": _ctx.isActive }]) }, [ _ctx.label ? (openBlock(), createElementBlock("div", _hoisted_1$4, toDisplayString(_ctx.label), 1)) : createCommentVNode("", true), _ctx.type !== "textarea" ? withDirectives((openBlock(), createElementBlock("input", { key: 1, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.computedValue = $event), ref: "inputRef", class: "material-input_input", type: _ctx.type, value: _ctx.modelValue, disabled: _ctx.disabled, readonly: _ctx.readonly, placeholder: _ctx.computedPlaceholder, onBlur: _cache[1] || (_cache[1] = (...args) => _ctx.onInputBlur && _ctx.onInputBlur(...args)), onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.onInputFocus && _ctx.onInputFocus(...args)) }, null, 40, _hoisted_2$4)), [ [vModelDynamic, _ctx.computedValue] ]) : withDirectives((openBlock(), createElementBlock("textarea", { key: 2, "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.computedValue = $event), ref: "textareaRef", class: "material-input_textarea", rows: "1", style: normalizeStyle(_ctx.textareaStyle), disabled: _ctx.disabled, readonly: _ctx.readonly, placeholder: _ctx.computedPlaceholder, onBlur: _cache[4] || (_cache[4] = (...args) => _ctx.onTextareaBlur && _ctx.onTextareaBlur(...args)), onFocus: _cache[5] || (_cache[5] = (...args) => _ctx.onTextareaFocus && _ctx.onTextareaFocus(...args)), onInput: _cache[6] || (_cache[6] = (...args) => _ctx.onTextareaInput && _ctx.onTextareaInput(...args)) }, null, 44, _hoisted_3$4)), [ [vModelText, _ctx.computedValue] ]) ], 2); } const MaterialInput = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-10b0d85a"]]); const _sfc_main$4 = defineComponent({ name: "MaterialRadio", props: { modelValue: { type: [String, Number, Boolean], default: false }, label: { type: [String, Number, Boolean], default: "" }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, type: { type: String, default: "radio" } }, emits: ["update:modelValue"], setup(props, { emit }) { const isChecked = computed(() => props.modelValue === props.label); const onChange = () => { if (!props.disabled && !props.readonly) { emit("update:modelValue", props.label); } }; return { isChecked, onChange }; } }); const _hoisted_1$3 = { class: "material-radio-input" }; const _hoisted_2$3 = ["value", "checked"]; const _hoisted_3$3 = { key: 0, class: "material-radio-label" }; function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("label", { class: normalizeClass(["material-radio", { "is-disabled": _ctx.disabled, "is-readonly": _ctx.readonly, "is-checked": _ctx.isChecked, [_ctx.type]: true }]), onChange: _cache[0] || (_cache[0] = (...args) => _ctx.onChange && _ctx.onChange(...args)) }, [ createElementVNode("span", _hoisted_1$3, [ createElementVNode("input", { class: "material-radio-input-original", type: "radio", value: _ctx.label, checked: _ctx.isChecked }, null, 8, _hoisted_2$3) ]), _ctx.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_3$3, [ !_ctx.$slots.default && _ctx.label ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ createTextVNode(toDisplayString(_ctx.label), 1) ], 64)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default", {}, void 0, true) ])) : createCommentVNode("", true) ], 34); } const MaterialRadio = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4], ["__scopeId", "data-v-89299f62"]]); const _sfc_main$3 = defineComponent({ name: "MaterialLoading" }); const _withScopeId$1 = (n) => (pushScopeId("data-v-9bee3f9f"), n = n(), popScopeId(), n); const _hoisted_1$2 = { class: "material-loading" }; const _hoisted_2$2 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("svg", { class: "material-loading-spinner", viewBox: "0 0 50 50" }, [ /* @__PURE__ */ createElementVNode("circle", { class: "material-loading-spinner-path", cx: "25", cy: "25", r: "20", fill: "none" }) ], -1)); const _hoisted_3$2 = [ _hoisted_2$2 ]; function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", _hoisted_1$2, _hoisted_3$2); } const MaterialLoading = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-9bee3f9f"]]); const _sfc_main$2 = defineComponent({ name: "MaterialCheckbox", props: { modelValue: { type: Boolean, default: false }, label: { type: String, default: "" }, disabled: { type: Boolean, default: false }, readonly: { type: Boolean, default: false }, indeterminate: { type: Boolean, default: false } }, emits: ["update:modelValue"], setup(props, { emit }) { const onChange = () => { if (!props.disabled && !props.readonly) { emit("update:modelValue", !props.modelValue); } }; return { onChange }; } }); const _hoisted_1$1 = { class: "material-checkbox-input" }; const _hoisted_2$1 = ["checked"]; const _hoisted_3$1 = { key: 0, class: "material-checkbox-label" }; function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("label", { class: normalizeClass(["material-checkbox", { "is-checked": _ctx.modelValue, "is-disabled": _ctx.disabled, "is-readonly": _ctx.readonly, "is-indeterminate": _ctx.indeterminate }]), onChange: _cache[0] || (_cache[0] = (...args) => _ctx.onChange && _ctx.onChange(...args)) }, [ createElementVNode("span", _hoisted_1$1, [ createElementVNode("input", { class: "material-checkbox-input-original", type: "checkbox", checked: _ctx.modelValue }, null, 8, _hoisted_2$1) ]), _ctx.label || _ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_3$1, [ !_ctx.$slots.default && _ctx.label ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ createTextVNode(toDisplayString(_ctx.label), 1) ], 64)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default", {}, void 0, true) ])) : createCommentVNode("", true) ], 34); } const MaterialCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2], ["__scopeId", "data-v-fb8b54b7"]]); const _sfc_main$1 = defineComponent({ name: "MainPanel", components: { MaterialInput, MaterialRadio, MaterialLoading, MaterialCheckbox }, setup() { const providerRef = inject("providerRef"); const onMaskClick = () => { if (!(providerRef == null ? void 0 : providerRef.value.isLoading)) { providerRef == null ? void 0 : providerRef.value.setVisible(false); } }; const onResetClick = () => { providerRef == null ? void 0 : providerRef.value.reset(); }; const onConfirmClick = () => { providerRef == null ? void 0 : providerRef.value.batchRename(); }; const onIsCheckUpdate = (item, val) => { providerRef == null ? void 0 : providerRef.value.updateItemIsCheck(item, val); }; const onCheckedAllUpdate = (val) => { providerRef == null ? void 0 : providerRef.value.updateCheckedAll(val); }; const currentList = ref([]); const updateCurrentList = (val) => { currentList.value = val; }; onMounted(() => { providerRef == null ? void 0 : providerRef.value.onCurrentListUpdate(updateCurrentList); }); onUnmounted(() => { providerRef == null ? void 0 : providerRef.value.offCurrentListUpdate(updateCurrentList); }); return { providerRef, currentList, onMaskClick, onResetClick, onConfirmClick, onIsCheckUpdate, onCheckedAllUpdate }; } }); const _withScopeId = (n) => (pushScopeId("data-v-65bcf42e"), n = n(), popScopeId(), n); const _hoisted_1 = { key: 0, class: "main-panel" }; const _hoisted_2 = { key: 0, class: "main-panel-content" }; const _hoisted_3 = { class: "main-panel-content-header" }; const _hoisted_4 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "main-panel-content-header-title" }, " 批量重命名当前目录下所有文件 ", -1)); const _hoisted_5 = { key: 0, class: "main-panel-content-header-form" }; const _hoisted_6 = { class: "main-panel-content-header-form-item" }; const _hoisted_7 = { class: "main-panel-content-header-form-item" }; const _hoisted_8 = { class: "main-panel-content-header-form-item" }; const _hoisted_9 = { class: "main-panel-content-header-form-item" }; const _hoisted_10 = { class: "main-panel-content-header-ctrl" }; const _hoisted_11 = { class: "main-panel-content-header-ctrl-option" }; const _hoisted_12 = ["disabled"]; const _hoisted_13 = ["disabled"]; const _hoisted_14 = { class: "main-panel-content-body" }; const _hoisted_15 = { class: "main-panel-content-body-grid" }; const _hoisted_16 = { class: "main-panel-content-body-grid-item-checkbox" }; const _hoisted_17 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "main-panel-content-body-grid-item-old_file_name" }, " 原文件名 ", -1)); const _hoisted_18 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "main-panel-content-body-grid-item-right-arrow" }, " ⮕ ", -1)); const _hoisted_19 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "main-panel-content-body-grid-item-new_file_name" }, " 新文件名 ", -1)); const _hoisted_20 = { class: "main-panel-content-body-grid-item-checkbox" }; const _hoisted_21 = ["title"]; const _hoisted_22 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("div", { class: "main-panel-content-body-grid-item-right-arrow" }, " ⮕ ", -1)); const _hoisted_23 = ["title"]; function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { const _component_material_input = resolveComponent("material-input"); const _component_material_radio = resolveComponent("material-radio"); const _component_material_checkbox = resolveComponent("material-checkbox"); const _component_material_loading = resolveComponent("material-loading"); return openBlock(), createBlock(Teleport, { to: "body" }, [ _ctx.providerRef ? (openBlock(), createElementBlock("div", _hoisted_1, [ createVNode(Transition, { name: "fade" }, { default: withCtx(() => [ _ctx.providerRef.visible ? (openBlock(), createElementBlock("div", { key: 0, class: "main-panel-mask", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onMaskClick && _ctx.onMaskClick(...args)) })) : createCommentVNode("", true) ]), _: 1 }), createVNode(Transition, { name: "fade-bottom" }, { default: withCtx(() => [ _ctx.providerRef.visible ? (openBlock(), createElementBlock("div", _hoisted_2, [ createElementVNode("div", _hoisted_3, [ _hoisted_4, _ctx.providerRef.replaceParams ? (openBlock(), createElementBlock("form", _hoisted_5, [ _ctx.providerRef.replaceParams.renameMode === "series" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ createElementVNode("div", _hoisted_6, [ createVNode(_component_material_input, { modelValue: _ctx.providerRef.replaceParams.title, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.providerRef.replaceParams.title = $event), label: "剧名" }, null, 8, ["modelValue"]) ]), createElementVNode("div", _hoisted_7, [ createVNode(_component_material_input, { modelValue: _ctx.providerRef.replaceParams.season, "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.providerRef.replaceParams.season = $event), label: "季数", type: "number" }, null, 8, ["modelValue"]) ]) ], 64)) : createCommentVNode("", true), _ctx.providerRef.replaceParams.renameMode === "pattern" ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [ createElementVNode("div", _hoisted_8, [ createVNode(_component_material_input, { modelValue: _ctx.providerRef.replaceParams.pattern, "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.providerRef.replaceParams.pattern = $event), label: "正则" }, null, 8, ["modelValue"]) ]), createElementVNode("div", _hoisted_9, [ createVNode(_component_material_input, { modelValue: _ctx.providerRef.replaceParams.replace, "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.providerRef.replaceParams.replace = $event), label: "替换文本" }, null, 8, ["modelValue"]) ]) ], 64)) : createCommentVNode("", true) ])) : createCommentVNode("", true), createElementVNode("div", _hoisted_10, [ createElementVNode("div", _hoisted_11, [ createVNode(_component_material_radio, { modelValue: _ctx.providerRef.replaceParams.renameMode, "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => _ctx.providerRef.replaceParams.renameMode = $event), label: "series" }, { default: withCtx(() => [ createTextVNode(" 剧集模式 ") ]), _: 1 }, 8, ["modelValue"]), createVNode(_component_material_radio, { modelValue: _ctx.providerRef.replaceParams.renameMode, "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => _ctx.providerRef.replaceParams.renameMode = $event), label: "pattern" }, { default: withCtx(() => [ createTextVNode(" 正则模式 ") ]), _: 1 }, 8, ["modelValue"]), createVNode(_component_material_checkbox, { modelValue: _ctx.providerRef.replaceParams.autoEpisode, "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => _ctx.providerRef.replaceParams.autoEpisode = $event) }, { default: withCtx(() => [ createTextVNode(" 自动集数 ") ]), _: 1 }, 8, ["modelValue"]) ]), createElementVNode("button", { class: "main-panel-content-header-ctrl-reset-button", disabled: _ctx.providerRef.isLoading, onClick: _cache[8] || (_cache[8] = (...args) => _ctx.onResetClick && _ctx.onResetClick(...args)) }, " 重置 ", 8, _hoisted_12), createElementVNode("button", { class: "main-panel-content-header-ctrl-confirm-button", disabled: !_ctx.providerRef.shouldContinue || _ctx.providerRef.isLoading, onClick: _cache[9] || (_cache[9] = (...args) => _ctx.onConfirmClick && _ctx.onConfirmClick(...args)) }, " 应用 ", 8, _hoisted_13) ]) ]), createElementVNode("div", _hoisted_14, [ createElementVNode("ul", _hoisted_15, [ createElementVNode("li", { class: normalizeClass(["main-panel-content-body-grid-item", { "is-error": _ctx.providerRef.hasError, "is-change": _ctx.providerRef.hasChange, "is-checked": !_ctx.providerRef.hasUncheckedAll }]) }, [ createElementVNode("div", _hoisted_16, [ createVNode(_component_material_checkbox, { "model-value": _ctx.providerRef.hasCheckedAll, indeterminate: !_ctx.providerRef.hasCheckedAll && !_ctx.providerRef.hasUncheckedAll, "onUpdate:modelValue": _ctx.onCheckedAllUpdate }, null, 8, ["model-value", "indeterminate", "onUpdate:modelValue"]) ]), _hoisted_17, _hoisted_18, _hoisted_19 ], 2), (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.currentList, (item) => { return openBlock(), createElementBlock("li", { key: item.id, class: normalizeClass(["main-panel-content-body-grid-item", { "is-error": item.isError, "is-change": item.isChange, "is-checked": item.isChecked }]) }, [ createElementVNode("div", _hoisted_20, [ createVNode(_component_material_checkbox, { "model-value": item.isChecked, "onUpdate:modelValue": ($event) => _ctx.onIsCheckUpdate(item, $event) }, null, 8, ["model-value", "onUpdate:modelValue"]) ]), createElementVNode("div", { class: "main-panel-content-body-grid-item-old_file_name", title: item.oldFileName }, toDisplayString(item.oldFileName), 9, _hoisted_21), _hoisted_22, createElementVNode("div", { class: "main-panel-content-body-grid-item-new_file_name", title: item.newFileName }, toDisplayString(item.newFileName), 9, _hoisted_23) ], 2); }), 128)) ]) ]), _ctx.providerRef.isLoading ? (openBlock(), createBlock(_component_material_loading, { key: 0 })) : createCommentVNode("", true) ])) : createCommentVNode("", true) ]), _: 1 }) ])) : createCommentVNode("", true) ]); } const MainPanel = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1], ["__scopeId", "data-v-65bcf42e"]]); const _sfc_main = defineComponent({ name: "App", components: { MainPanel }, setup() { const providerRef = inject("providerRef"); const EnterComponent2 = computed(() => { var _a; return (_a = providerRef == null ? void 0 : providerRef.value) == null ? void 0 : _a.EnterComponent(); }); return { EnterComponent: EnterComponent2 }; } }); function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_main_panel = resolveComponent("main-panel"); return openBlock(), createElementBlock(Fragment, null, [ (openBlock(), createBlock(resolveDynamicComponent(_ctx.EnterComponent))), createVNode(_component_main_panel) ], 64); } const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]); const scriptRel = function detectScriptRel() { const relList = typeof document !== "undefined" && document.createElement("link").relList; return relList && relList.supports && relList.supports("modulepreload") ? "modulepreload" : "preload"; }(); const assetsURL = function(dep) { return "/" + dep; }; const seen = {}; const __vitePreload = function preload(baseModule, deps, importerUrl) { let promise = Promise.resolve(); if (deps && deps.length > 0) { const links = document.getElementsByTagName("link"); promise = Promise.all(deps.map((dep) => { dep = assetsURL(dep); if (dep in seen) return; seen[dep] = true; const isCss = dep.endsWith(".css"); const cssSelector = isCss ? '[rel="stylesheet"]' : ""; const isBaseRelative = !!importerUrl; if (isBaseRelative) { for (let i = links.length - 1; i >= 0; i--) { const link2 = links[i]; if (link2.href === dep && (!isCss || link2.rel === "stylesheet")) { return; } } } else if (document.querySelector(`link[href="${dep}"]${cssSelector}`)) { return; } const link = document.createElement("link"); link.rel = isCss ? "stylesheet" : scriptRel; if (!isCss) { link.as = "script"; link.crossOrigin = ""; } link.href = dep; document.head.appendChild(link); if (isCss) { return new Promise((res, rej) => { link.addEventListener("load", res); link.addEventListener("error", () => rej(new Error(`Unable to preload CSS for ${dep}`))); }); } })); } return promise.then(() => baseModule()).catch((err) => { const e = new Event("vite:preloadError", { cancelable: true }); e.payload = err; window.dispatchEvent(e); if (!e.defaultPrevented) { throw err; } }); }; const complementZero = (payload) => { if (isString(payload)) { payload = parseInt(payload); if (isNaN(payload)) { return ""; } } return (payload < 10 ? "0" : "") + payload; }; class Provider { constructor() { // 显示加载 __publicField(this, "isLoading", false); // 主面板显示控制 __publicField(this, "visible", false); // 替换参数 __publicField(this, "replaceParams", new ReplaceParams( () => this._onReplaceParamsUpdate.call(this) )); // 原始文件列表数据 __publicField(this, "originList", []); // 当前文件列表数据 __publicField(this, "_currentList", []); // 文件列表更新回调函数集合 __publicField(this, "_currentListUpdateHandlerSet", /* @__PURE__ */ new Set()); // 取消选中的文件列表 __publicField(this, "_uncheckedList", /* @__PURE__ */ new Set()); // 是否有错误 __publicField(this, "hasError", false); // 是否有变更 __publicField(this, "hasChange", false); // 是否全选 __publicField(this, "hasCheckedAll", false); // 是否全不选 __publicField(this, "hasUncheckedAll", false); // 是否可继续 __publicField(this, "shouldContinue", false); } // 匹配测试 static test() { return false; } setVisible(val = false) { this.visible = val; if (val) { this._updateOriginList(); } } // 替换参数更新回调函数 _onReplaceParamsUpdate() { this._updateCurrentList(); } // 重置替换参数 _resetReplaceParams() { this.replaceParams.reset(); } // 更新原始文件列表数据 _updateOriginList() { this.getOriginList().then((res) => { this.originList = res; this._uncheckedList = /* @__PURE__ */ new Set(); this._updateCurrentList(); }); } get currentList() { return this._currentList; } // 更新当前文件列表数据 _updateCurrentList() { const renameMode = this.replaceParams.renameMode; const result = this.originList.map((item) => { return { id: item.id, ext: item.ext, isError: false, fileName: item.fileName, isChange: false, isMatched: false, isChecked: !this._uncheckedList.has(item.id), isLoading: false, oldFileName: item.fullFileName, newFileName: "" }; }); const newFileNameSet = /* @__PURE__ */ new Set(); if (renameMode === RENAME_MODE_SERIES) { if (this.replaceParams.title || this.replaceParams.season) { const season = this.replaceParams.season ? ".S" + complementZero(this.replaceParams.season) : ""; result.forEach((item, index) => { const fileName = this.replaceParams.title || item.fileName; let newFileName = fileName + season; if (this.replaceParams.autoEpisode) { const episode = (season ? "" : ".") + "E" + complementZero(index + 1); newFileName += episode; } newFileName += "." + item.ext; item.newFileName = newFileName; this._listItemGeneralMethod(item, newFileNameSet); }); } } if (renameMode === RENAME_MODE_PATTERN) { let regexp2; if (this.replaceParams.pattern) { try { regexp2 = new RegExp(this.replaceParams.pattern); } catch (error) { console.error("regexp error", error); } if (regexp2) { result.forEach((item, index) => { if (this.replaceParams.autoEpisode) { item.isMatched = !!(regexp2 == null ? void 0 : regexp2.test(item.fileName)); if (item.isMatched) { let newFileName = item.fileName.replace( regexp2, this.replaceParams.replace ); newFileName += (newFileName ? ".E" : "E") + complementZero(index + 1); newFileName += "." + item.ext; item.newFileName = newFileName; this._listItemGeneralMethod(item, newFileNameSet); } } else { item.isMatched = !!(regexp2 == null ? void 0 : regexp2.test(item.oldFileName)); if (item.isMatched) { item.newFileName = item.oldFileName.replace( regexp2, this.replaceParams.replace ); this._listItemGeneralMethod(item, newFileNameSet); } } }); } } } this._currentList = result; this._updateHasError(); this._updateHasChange(); this._updateHasCheckedAll(); this._updateShouldContinue(); this._emitCurrentListUpdateHandler(); } // 文件列表项通用处理 _listItemGeneralMethod(item, newFileNameSet) { item.isChange = item.oldFileName !== item.newFileName; item.isError = item.isChecked && (!item.newFileName || newFileNameSet.has(item.newFileName)); item.isChecked && newFileNameSet.add(item.newFileName); } // 绑定文件列表更新回调函数 onCurrentListUpdate(handler) { if (!this._currentListUpdateHandlerSet.has(handler)) { this._currentListUpdateHandlerSet.add(handler); } } // 解绑文件列表更新回调函数 offCurrentListUpdate(handler) { if (this._currentListUpdateHandlerSet.has(handler)) { this._currentListUpdateHandlerSet.delete(handler); } } // 触发文件列表更新回调函数 _emitCurrentListUpdateHandler() { this._currentListUpdateHandlerSet.forEach((handler) => { handler(this._currentList); }); } // 更新是否选中文件列表 updateItemIsCheck(item, val) { if (val) { this._uncheckedList.delete(item.id); } else { this._uncheckedList.add(item.id); } this._updateCurrentList(); } // 更新是否全选 updateCheckedAll(val) { if (val) { this._uncheckedList = /* @__PURE__ */ new Set(); } else { this._currentList.forEach((item) => { this._uncheckedList.add(item.id); }); } this._updateCurrentList(); } _updateHasError() { this.hasError = this._currentList.some( (item) => item.isChecked && item.isError ); } _updateHasChange() { this.hasChange = this._currentList.some( (item) => item.isChecked && item.isChange ); } _updateHasCheckedAll() { this.hasCheckedAll = this._uncheckedList.size === 0; this.hasUncheckedAll = this._uncheckedList.size === this._currentList.length; } _updateShouldContinue() { this.shouldContinue = !this.hasError && this.hasChange; } // 批量重命名 batchRename() { if (!this.shouldContinue) { return; } this.isLoading = true; const data = this.currentList.filter( (item) => item.isChecked && item.isChange && !item.isError ); this.renameRequest(data).then(() => { this._resetReplaceParams(); return this.refresh(); }).finally(() => { this.isLoading = false; }); } // 重置 reset() { this._resetReplaceParams(); this._updateOriginList(); } } class ReplaceParams { constructor(onUpdateHandler) { // 剧名 __publicField(this, "_title", ""); // 季数 __publicField(this, "_season", ""); // 正则 __publicField(this, "_pattern", ""); // 替换文本 __publicField(this, "_replace", ""); // 自动集数 __publicField(this, "_autoEpisode", true); // 重命名模式 __publicField(this, "_renameMode", RENAME_MODE_SERIES); // private _onUpdateTimer: NodeJS.Timeout | undefined; __publicField(this, "_onUpdate", () => { this.onUpdateHandler && this.onUpdateHandler(this); }); __publicField(this, "onUpdateHandler"); this.onUpdateHandler = onUpdateHandler; } get title() { return this._title; } set title(val) { this._title = val; this._onUpdate(); } get season() { return this._season; } set season(val) { this._season = val; this._onUpdate(); } get pattern() { return this._pattern; } set pattern(val) { this._pattern = val; this._onUpdate(); } get replace() { return this._replace; } set replace(val) { this._replace = val; this._onUpdate(); } get autoEpisode() { return this._autoEpisode; } set autoEpisode(val) { this._autoEpisode = val; this._onUpdate(); } get renameMode() { return this._renameMode; } set renameMode(val) { this._renameMode = val; this._onUpdate(); } reset(val) { this.title = (val == null ? void 0 : val.title) || ""; this.season = (val == null ? void 0 : val.season) || ""; this.pattern = (val == null ? void 0 : val.pattern) || ""; this.replace = (val == null ? void 0 : val.replace) || ""; this.autoEpisode = val ? !!val.autoEpisode : true; this.renameMode = (val == null ? void 0 : val.renameMode) || RENAME_MODE_SERIES; } } const RENAME_MODE_SERIES = "series"; const RENAME_MODE_PATTERN = "pattern"; defineAsyncComponent( () => __vitePreload(() => module.import('./EnterComponent-dwejL9Yj-sJp_IATP.js'), void 0 ) ); const querySelector = (payload, count = 0, timeout = 100) => { let element = document.querySelector(payload); if (element) { return Promise.resolve(element); } else if (count > 0) { return new Promise((resolve, reject) => { const timer = window.setTimeout(() => { element = document.querySelector(payload); if (element) { resolve(element); window.clearInterval(timer); } else if (--count <= 0) { reject(); window.clearInterval(timer); } }, timeout); }); } else { return Promise.reject(); } }; const regexp = /^(.+)\.([^.]+)$/; const fileNameParse = (payload) => { const matchResult = payload.match(regexp); return { ext: (matchResult == null ? void 0 : matchResult[2]) || "", fileName: (matchResult == null ? void 0 : matchResult[1]) || payload }; }; const EnterComponent = defineAsyncComponent( () => __vitePreload(() => module.import('./EnterComponent-CDhV39UO-QAzF1dEG.js'), void 0 ) ); class ProviderBaidu extends Provider { constructor() { super(...arguments); __publicField(this, "type", "baidu"); __publicField(this, "rootElementId", "cloud-disk-plugin"); __publicField(this, "rootElementInsertTarget", ".wp-s-agile-tool-bar__header"); __publicField(this, "rootElementInsertMethod", "prepend"); __publicField(this, "EnterComponent", () => EnterComponent); } getOriginList() { return querySelector(".nd-new-main-list").then((res) => { var _a; const fileList = (_a = res == null ? void 0 : res.__vue__) == null ? void 0 : _a.fileList; if (!fileList) { return Promise.reject(); } const result = []; fileList.forEach((item) => { if (item.isdir === 0) { result.push({ id: item.fs_id, fullFileName: item.formatName, ...fileNameParse(item.formatName) }); } }); return result; }); } // getOriginListByElement() { // const trList = document.querySelectorAll( // "table.wp-s-pan-table__body-table tbody>tr" // ); // const result: IOriginListItem[] = []; // trList.forEach((item, index) => { // const elementA = item.querySelector("a"); // if (!elementA) { // return; // } // const elementImgAlt = item.querySelector("img[alt]")?.getAttribute("alt"); // if (elementImgAlt === "folder" || elementImgAlt === "share") { // return; // } // const fullFileName = elementA.getAttribute("title") || ""; // result.push({ // id: item.getAttribute("data-id") || fullFileName || index + "", // fullFileName, // ...fileNameParse(fullFileName), // }); // }); // return Promise.resolve(result); // } async renameRequest(data) { const path = getPath(); const token = await getToken(); const filelist = data.map((item) => { return { id: item.id, path: path + item.oldFileName, newname: item.newFileName }; }); const body = new FormData(); body.append("filelist", JSON.stringify(filelist)); return fetch( `https://pan.baidu.com/api/filemanager?async=2&onnest=fail&opera=rename&bdstoken=${token}&clienttype=0&app_id=250528&web=1`, { method: "POST", body } ).then((res) => { if (res.ok) { return res.json(); } else { return Promise.reject(new Error("network error")); } }).then((res) => { if (res.errno === 0) { return new Promise((resolve) => { setTimeout(() => { resolve(res); }, 2e3); }); } return Promise.reject(res); }); } refresh() { this.visible = false; return querySelector(".nd-new-main-list").then( (res) => { var _a; return (_a = res == null ? void 0 : res.__vue__) == null ? void 0 : _a.reloadList(); } ); } } __publicField(ProviderBaidu, "test", () => location.href.startsWith( "https://pan.baidu.com/disk/main/#/index?category=all" )); const getPath = () => { const currentPath = location.href.match(/path=(.+?)(?:&|$)/); let result; if (currentPath) { result = decodeURIComponent(currentPath[1]); if (result.charAt(0) !== "/") { result = "/" + result; } if (result.charAt(result.length - 1) !== "/") { result += "/"; } } else { result = "/"; } return result; }; const getToken = () => { return querySelector(".nd-main-list, .nd-new-main-list").then( (res) => { var _a, _b; return ((_b = (_a = res == null ? void 0 : res.__vue__) == null ? void 0 : _a.yunData) == null ? void 0 : _b.bdstoken) ? res.__vue__.yunData.bdstoken : Promise.reject(); } ); }; defineAsyncComponent( () => __vitePreload(() => module.import('./EnterComponent-1iDO-HqY-IjxwdH7y.js'), void 0 ) ); const getProvider = /* @__PURE__ */ ((instance) => { return () => { if (instance) { return Promise.resolve(instance); } if (ProviderBaidu.test()) { instance = new ProviderBaidu(); } return instance ? Promise.resolve(instance) : Promise.reject(); }; })(); const getProviderRef = /* @__PURE__ */ ((instanceRef) => { return () => { if (!instanceRef) { return getProvider().then((res) => { instanceRef = ref(res); return instanceRef; }); } return Promise.resolve(instanceRef); }; })(); window.setInterval( () => getProviderRef().then((providerRef) => init(providerRef)), 300 ); const init = (providerRef) => { querySelector(providerRef.value.rootElementInsertTarget).then( (target) => querySelector("#" + providerRef.value.rootElementId).catch(() => { const app = createApp(App); app.provide("providerRef", providerRef); app.mount( (() => { const root = document.createElement("div"); root.setAttribute("id", providerRef.value.rootElementId); target[providerRef.value.rootElementInsertMethod](root); return root; })() ); }) ); }; }) }; })); System.register("./EnterComponent-dwejL9Yj-sJp_IATP.js", ['vue', './__monkey.entry-Cb9Yaawu.js'], (function (exports, module) { 'use strict'; var defineComponent, openBlock, createElementBlock, _export_sfc; return { setters: [module => { defineComponent = module.defineComponent; openBlock = module.openBlock; createElementBlock = module.createElementBlock; }, module => { _export_sfc = module._; }], execute: (function () { const _sfc_main = defineComponent({ name: "EnterComponentAli", setup() { return {}; } }); const _hoisted_1 = { class: "enter-component" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", _hoisted_1, "EnterComponentAli"); } const EnterComponent = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])); }) }; })); System.register("./EnterComponent-CDhV39UO-QAzF1dEG.js", ['vue', './__monkey.entry-Cb9Yaawu.js'], (function (exports, module) { 'use strict'; var defineComponent, inject, openBlock, createElementBlock, createElementVNode, pushScopeId, popScopeId, _export_sfc; return { setters: [module => { defineComponent = module.defineComponent; inject = module.inject; openBlock = module.openBlock; createElementBlock = module.createElementBlock; createElementVNode = module.createElementVNode; pushScopeId = module.pushScopeId; popScopeId = module.popScopeId; }, module => { _export_sfc = module._; }], execute: (function () { const _sfc_main = defineComponent({ name: "EnterComponentBaidu", setup() { const providerRef = inject("providerRef"); const onClick = () => { providerRef == null ? void 0 : providerRef.value.setVisible(true); }; return { onClick }; } }); const _withScopeId = (n) => (pushScopeId("data-v-3ff86bbd"), n = n(), popScopeId(), n); const _hoisted_1 = { class: "enter-component" }; const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", { class: "enter-component-button-text" }, "重命名", -1)); const _hoisted_3 = [ _hoisted_2 ]; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", _hoisted_1, [ createElementVNode("button", { type: "button", class: "enter-component-button", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onClick && _ctx.onClick(...args)) }, _hoisted_3) ]); } const EnterComponent = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-3ff86bbd"]])); }) }; })); System.register("./EnterComponent-1iDO-HqY-IjxwdH7y.js", ['vue', './__monkey.entry-Cb9Yaawu.js'], (function (exports, module) { 'use strict'; var defineComponent, openBlock, createElementBlock, _export_sfc; return { setters: [module => { defineComponent = module.defineComponent; openBlock = module.openBlock; createElementBlock = module.createElementBlock; }, module => { _export_sfc = module._; }], execute: (function () { const _sfc_main = defineComponent({ name: "EnterComponentQuark", setup() { return {}; } }); const _hoisted_1 = { class: "enter-component" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", _hoisted_1, "EnterComponentQuark"); } const EnterComponent = exports("default", /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]])); }) }; })); System.import("./__entry.js", "./");function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { __vite__mapDeps.viteFileDeps = [] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) }