diff --git a/deploy/worker/generate-toml.js b/deploy/worker/generate-toml.js index e0b60c6..555e79f 100644 --- a/deploy/worker/generate-toml.js +++ b/deploy/worker/generate-toml.js @@ -65,7 +65,6 @@ bucket_name = "${env.R2_BUCKET_NAME}" toml += ` [vars] # AI_CONFIG_SECRET = "" # 至少 32 个字符的随机密钥,用于加密保存 AI 供应商 API Key -# Workers 生产环境:npx wrangler secret put AI_CONFIG_SECRET --config deploy/worker/wrangler.toml `; // 业务环境变量(从 JSON 解析) diff --git a/frontend-dist/css/787.176e498b.css b/frontend-dist/css/787.176e498b.css deleted file mode 100644 index 54e835e..0000000 --- a/frontend-dist/css/787.176e498b.css +++ /dev/null @@ -1 +0,0 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-feeadb1c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-feeadb1c]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-feeadb1c]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-feeadb1c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:color-mix(in srgb,var(--primary-color) 10%,transparent);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-feeadb1c]{font-size:15px;font-weight:600;color:var(--primary-color-accent);display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-feeadb1c]:before{content:"";display:inline-block;width:4px;height:16px;background:var(--primary-color-accent);border-radius:2px}.mobile-drawer-close[data-v-feeadb1c]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-feeadb1c]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-feeadb1c]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-feeadb1c]{background:color-mix(in srgb,var(--primary-color) 15%,transparent);color:var(--primary-color-accent);font-weight:600}.mobile-drawer-item-icon[data-v-feeadb1c]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-feeadb1c]{opacity:1;color:var(--primary-color-accent)}.mobile-drawer-back[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-feeadb1c]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-feeadb1c]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-feeadb1c]{animation:slideInLeft-feeadb1c .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-feeadb1c]{animation:slideOutLeft-feeadb1c .2s ease-in}.drawer-slide-enter-from[data-v-feeadb1c],.drawer-slide-leave-to[data-v-feeadb1c]{opacity:0}@keyframes slideInLeft-feeadb1c{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-feeadb1c{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-f5c66568]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-f5c66568]{width:100%;max-width:100%;background:var(--mobile-action-sheet-bg);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--mobile-action-sheet-border)}html.dark .bottom-sheet[data-v-f5c66568]{box-shadow:none}.bottom-sheet-header[data-v-f5c66568]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-f5c66568]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-f5c66568]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-sheet-content[data-v-f5c66568]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-f5c66568]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--mobile-action-sheet-item-bg);color:var(--el-text-color-primary)}.bottom-sheet-item[data-v-f5c66568]:active{transform:scale(.98);background:var(--mobile-action-sheet-item-active-bg)}.bottom-sheet-icon[data-v-f5c66568]{font-size:20px;width:28px;text-align:center;color:var(--primary-color-accent)}.bottom-sheet-danger .bottom-sheet-icon[data-v-f5c66568],.bottom-sheet-danger[data-v-f5c66568]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-f5c66568]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-f5c66568]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-f5c66568]{animation:slideUp-f5c66568 .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-f5c66568]{animation:slideDown-f5c66568 .2s ease-in}.bottom-sheet-enter-from[data-v-f5c66568],.bottom-sheet-leave-to[data-v-f5c66568]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-f5c66568],.bottom-sheet-leave-to .bottom-sheet[data-v-f5c66568]{transform:translateY(100%)}@keyframes slideUp-f5c66568{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-f5c66568{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.ai-tags[data-v-954f5f34]{margin:16px 0;padding:18px;text-align:left;border-radius:16px;border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.ai-footer-actions[data-v-954f5f34],.ai-footer[data-v-954f5f34],.ai-heading[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-result-heading[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{display:flex;align-items:center;gap:10px}.ai-footer[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{justify-content:space-between}.ai-toolbar[data-v-954f5f34]{flex-wrap:wrap}.ai-heading h4[data-v-954f5f34]{margin:0;color:var(--el-text-color-primary);font-size:15px}.ai-empty-icon[data-v-954f5f34],.ai-heading-icon[data-v-954f5f34]{display:grid;place-items:center;color:var(--el-color-primary);background:var(--el-color-primary-light-9);border-radius:12px}.ai-heading-icon[data-v-954f5f34]{width:34px;height:34px;font-size:16px}.help-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);cursor:pointer}.ai-tags .el-button[data-v-954f5f34]{gap:7px}.ai-tags[data-v-954f5f34] .el-button>span{display:inline-flex;align-items:center;gap:7px}.ai-empty[data-v-954f5f34]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:28px 12px 12px}.ai-empty-icon[data-v-954f5f34]{width:52px;height:52px;font-size:22px}.ai-empty-title[data-v-954f5f34],.ai-selection[data-v-954f5f34]{color:var(--el-text-color-secondary);font-size:13px;overflow-wrap:anywhere}.ai-result[data-v-954f5f34] .el-alert__title{overflow-wrap:anywhere}.ai-ready[data-v-954f5f34]{padding-bottom:20px}.ai-progress[data-v-954f5f34]{margin-top:18px}.ai-progress-label[data-v-954f5f34]{color:var(--el-text-color-secondary);margin-bottom:10px;font-size:13px}.ai-results[data-v-954f5f34]{display:grid;gap:12px;margin-top:18px}.ai-result[data-v-954f5f34]{border:1px solid var(--el-border-color-light);border-radius:12px;padding:14px;background:var(--el-fill-color-blank)}.ai-result-heading[data-v-954f5f34]{margin-bottom:12px}.ai-file-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);flex-shrink:0}.ai-file[data-v-954f5f34]{flex:1;min-width:0;font-weight:500;overflow-wrap:anywhere;line-height:1.5}.ai-result-heading>.el-tag[data-v-954f5f34]{flex-shrink:0}.ai-tag-list[data-v-954f5f34]{display:flex;flex-wrap:wrap;gap:8px}.ai-tag-list .el-check-tag[data-v-954f5f34],.ai-tag-list .el-tag[data-v-954f5f34]{max-width:100%;height:auto;white-space:normal;overflow-wrap:anywhere}.ai-tag-list [aria-disabled=true][data-v-954f5f34]{cursor:default;opacity:.65}.ai-save-error[data-v-954f5f34]{margin-top:12px}.ai-footer[data-v-954f5f34]{margin-top:18px;padding-top:16px;border-top:1px solid var(--el-border-color-lighter);flex-wrap:wrap}.ai-footer-actions[data-v-954f5f34]{flex-wrap:wrap;margin-left:auto}.ai-footer-actions .el-button[data-v-954f5f34]{height:32px;box-sizing:border-box;padding:8px 15px}.ai-footer-actions .el-button+.el-button[data-v-954f5f34]{margin-left:0}@media (max-width:480px){.ai-tags[data-v-954f5f34]{padding:14px}.ai-footer-actions[data-v-954f5f34]{width:100%}.ai-footer-actions .el-button[data-v-954f5f34]{flex:1}}.batch-tag-container[data-v-2bcde7ae]{padding:0}.tab-content[data-v-2bcde7ae]{padding:20px}.ai-tab-content[data-v-2bcde7ae]{padding:0}.tab-description[data-v-2bcde7ae]{margin:0 0 15px 0;color:var(--el-text-color-regular);font-size:14px}.input-section[data-v-2bcde7ae]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-2bcde7ae]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-2bcde7ae]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-2bcde7ae]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-2bcde7ae],.tags-to-add-section[data-v-2bcde7ae]{margin-bottom:20px}.common-tags-section h4[data-v-2bcde7ae],.tags-to-add-section h4[data-v-2bcde7ae]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-2bcde7ae]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-2bcde7ae]{cursor:default}.empty-message[data-v-2bcde7ae]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.action-buttons[data-v-2bcde7ae]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-8ac449fe]{padding:10px 0 0}.tag-management-container .single-ai-panel[data-v-8ac449fe]{margin-bottom:0}.input-section[data-v-8ac449fe]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-8ac449fe]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-8ac449fe]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-8ac449fe]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-8ac449fe],.popular-tags-section[data-v-8ac449fe]{margin-bottom:20px}.current-tags-section h4[data-v-8ac449fe],.popular-tags-section h4[data-v-8ac449fe]{margin:0 0 10px 0;font-size:14px;color:var(--el-text-color-regular)}.tags-container[data-v-8ac449fe]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-8ac449fe]{cursor:default}.tag-item.clickable[data-v-8ac449fe]{cursor:pointer;transition:transform .2s}.empty-message[data-v-8ac449fe]{color:var(--el-text-color-secondary);font-size:13px;padding:10px 0}.dialog-footer[data-v-8ac449fe]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-550287cc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-550287cc]{margin-left:0!important}.video-preview[data-v-550287cc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-550287cc],.video-preview[data-v-550287cc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-550287cc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-550287cc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-550287cc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-550287cc]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-550287cc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-550287cc] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-550287cc] .el-descriptions__content .el-tag,[data-v-550287cc] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-550287cc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-550287cc] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-550287cc]{justify-content:center}}.batch-floating-bar[data-v-49301bcc]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:8px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:18px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.batch-selection-summary[data-v-49301bcc]{display:flex;align-items:center;flex:0 0 auto;padding:0 4px}.batch-selection-count[data-v-49301bcc]{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border:1px solid color-mix(in srgb,var(--primary-color) 28%,transparent);border-radius:10px;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-49301bcc]{width:1px;height:24px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-49301bcc]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-49301bcc]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:1px solid transparent;border-radius:12px;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:border-color .2s ease,background-color .2s ease,color .2s ease}.batch-floating-btn[data-v-49301bcc]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.ban[data-v-49301bcc],.batch-floating-btn.copy[data-v-49301bcc],.batch-floating-btn.download[data-v-49301bcc],.batch-floating-btn.move[data-v-49301bcc],.batch-floating-btn.tag[data-v-49301bcc],.batch-floating-btn.white[data-v-49301bcc]{color:var(--admin-batch-action-color)}.batch-floating-btn.danger[data-v-49301bcc]{color:var(--admin-batch-delete-color)}.batch-floating-btn.danger[data-v-49301bcc]:hover{border-color:color-mix(in srgb,var(--admin-batch-delete-color) 32%,transparent);color:var(--admin-batch-delete-color);background:color-mix(in srgb,var(--admin-batch-delete-color) 10%,transparent)}.batch-floating-btn.ghost[data-v-49301bcc]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-49301bcc]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-49301bcc],.batch-toolbar-leave-active[data-v-49301bcc]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-49301bcc]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:6px;padding:6px;border-radius:16px}.batch-selection-summary[data-v-49301bcc]{padding:0 1px}.batch-selection-count[data-v-49301bcc]{min-width:24px;height:26px;padding:0 7px;font-size:12px;border-radius:9px}.batch-toolbar-divider[data-v-49301bcc]{height:22px}.batch-floating-actions[data-v-49301bcc]{flex:1;min-width:0;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-49301bcc]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-49301bcc]{width:30px;height:30px;min-width:30px;padding:0;border-radius:10px}.batch-floating-icon[data-v-49301bcc]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-25a3242c]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-25a3242c]:last-child{border-bottom:none}.list-item[data-v-25a3242c]:hover{background:var(--el-fill-color-light)}.list-col[data-v-25a3242c]{display:flex;align-items:center}.list-col-checkbox[data-v-25a3242c]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}.list-col-preview[data-v-25a3242c]{justify-content:center;cursor:pointer}.list-col-name[data-v-25a3242c]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-25a3242c]:hover{color:var(--primary-color-accent)}.filename-ellipsis[data-v-25a3242c]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-25a3242c]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-25a3242c]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-25a3242c]{font-size:13px}.address-box[data-v-25a3242c],.channel-name-box[data-v-25a3242c]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-25a3242c]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-25a3242c]{width:70px}.address-box[data-v-25a3242c]::-webkit-scrollbar,.channel-name-box[data-v-25a3242c]::-webkit-scrollbar{display:none}.list-col-tags[data-v-25a3242c]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-25a3242c]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-25a3242c]{min-width:30px;text-align:center}.list-empty[data-v-25a3242c]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-25a3242c]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-25a3242c]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-25a3242c]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-25a3242c]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-25a3242c]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-25a3242c]:hover{background:var(--primary-color);color:#fff}.list-action-danger[data-v-25a3242c]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-25a3242c]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-25a3242c],.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c],.list-col-tags[data-v-25a3242c]{display:none}.list-col-name[data-v-25a3242c]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-25a3242c]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-25a3242c]{font-size:24px}.list-file-icon[data-v-25a3242c]{font-size:21px}.list-col-actions[data-v-25a3242c]{gap:3px}.list-action-btn[data-v-25a3242c]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-25a3242c]{width:18px;min-width:18px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:14px;--el-checkbox-input-height:14px}}.img-card[data-v-956fb02e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-956fb02e]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-956fb02e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-956fb02e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-956fb02e] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-956fb02e]:hover{transform:scale(1.05)}.image-preview[data-v-956fb02e],.video-preview[data-v-956fb02e]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-956fb02e]{cursor:pointer}.img-card:hover .file-icon[data-v-956fb02e],.img-card:hover .image-preview[data-v-956fb02e],.img-card:hover .video-preview[data-v-956fb02e]{transform:scale(1.03)}.image-preview[data-v-956fb02e]:hover{opacity:.8}.file-short-info[data-v-956fb02e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-956fb02e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-956fb02e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-956fb02e]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-956fb02e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-956fb02e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-956fb02e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-956fb02e]{cursor:pointer}.card-bottom-overlay[data-v-956fb02e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-956fb02e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-956fb02e]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-956fb02e]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-956fb02e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-956fb02e],.action-bar-right[data-v-956fb02e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-956fb02e]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-956fb02e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-956fb02e]:active{transform:scale(.95)}.action-btn-danger[data-v-956fb02e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-956fb02e]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-956fb02e] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-956fb02e]:hover{transform:none}.file-short-info[data-v-956fb02e]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-956fb02e],.primary-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-956fb02e]{padding:22px 6px 6px}.file-name[data-v-956fb02e]{font-size:11px}.file-icon[data-v-956fb02e]{font-size:34px}.action-bar[data-v-956fb02e]{display:none!important}}@keyframes skeleton-shimmer-956fb02e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-956fb02e]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-956fb02e 1.5s ease-in-out infinite}.error-wrapper[data-v-956fb02e]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-956fb02e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-956fb02e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-534cf01b]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-534cf01b] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-534cf01b] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-534cf01b] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-534cf01b]:hover{transform:scale(1.05)}.folder-card[data-v-534cf01b]{cursor:pointer}.folder-icon[data-v-534cf01b]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-534cf01b]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-534cf01b]{transform:scale(1.03)}.card-bottom-overlay[data-v-534cf01b]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-534cf01b]{display:flex;align-items:center;justify-content:center}.file-name[data-v-534cf01b]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-534cf01b]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-534cf01b]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-534cf01b],.action-bar-right[data-v-534cf01b]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-534cf01b]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-534cf01b]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-534cf01b]:active{transform:scale(.95)}.action-btn-danger[data-v-534cf01b]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-534cf01b]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-534cf01b] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-534cf01b]:hover{transform:none}.folder-icon-svg[data-v-534cf01b]{font-size:36px}.card-bottom-overlay[data-v-534cf01b]{padding:22px 6px 6px}.file-name[data-v-534cf01b]{font-size:11px}.action-bar[data-v-534cf01b]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.dashboard-checkbox[data-v-3757bfa7]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .2s ease,border-color .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:50%;background:transparent;transition:border-color .18s ease,background .18s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:hover{border-color:var(--glass-border-hover)}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:focus-visible{outline:none;border-color:color-mix(in srgb,var(--primary-color-accent) 42%,transparent)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7],.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]{border-color:var(--glass-border);background:var(--glass-bg)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]:before{border-color:hsla(0,0%,100%,.4);background:var(--primary-color)}.dashboard-checkbox-mark[data-v-3757bfa7]{position:relative;z-index:1;width:10px;height:10px;opacity:0;transform:scale(.72);transition:opacity .16s ease,transform .16s ease}.dashboard-checkbox.checked .dashboard-checkbox-mark[data-v-3757bfa7],.dashboard-checkbox.indeterminate .dashboard-checkbox-mark[data-v-3757bfa7]{opacity:1;transform:scale(1)}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{inset:6px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:10px;height:10px}}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-42919522]{flex-shrink:0}.filter-trigger[data-v-42919522]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-42919522]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-42919522]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.filter-badge[data-v-42919522] .el-badge__content{background:var(--primary-color);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-42919522]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-42919522]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-42919522]:last-of-type{border-bottom:none}.filter-title[data-v-42919522]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-42919522],.filter-options[data-v-42919522] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-42919522] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:6px;transition:all .2s ease}.filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 14%,transparent)}.filter-options[data-v-42919522] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-42919522] .el-checkbox__input.is-checked+.el-checkbox__label{color:var(--primary-color-accent)}.channel-group-title[data-v-42919522]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-42919522]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-42919522] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--primary-color);border-color:var(--primary-color)}.filter-actions[data-v-42919522]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-42919522]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-42919522]:hover:not(:disabled){background:var(--primary-color);border-color:var(--primary-color-accent);color:#fff}.filter-actions .el-button[data-v-42919522]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-42919522]{min-width:160px;max-height:320px}.filter-section[data-v-42919522]{padding:6px 10px}.filter-title[data-v-42919522]{font-size:11px;margin-bottom:4px}.filter-options[data-v-42919522] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-42919522] .el-checkbox__label{font-size:12px}.header-icon[data-v-42919522]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-2fe4fd26]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2fe4fd26]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2fe4fd26]{z-index:1200}.page-switcher-sheet[data-v-2fe4fd26]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2fe4fd26]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:160px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2fe4fd26]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2fe4fd26]{line-height:1}.page-switcher-arrow[data-v-2fe4fd26]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2fe4fd26]{transform:rotate(180deg)}.page-option[data-v-2fe4fd26]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2fe4fd26]{position:absolute;top:45px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2fe4fd26]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2fe4fd26]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2fe4fd26]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2fe4fd26]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2fe4fd26]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26],.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26],.page-option.is-current>.page-switcher-title[data-v-2fe4fd26]{translate:0 1px}.page-option[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2fe4fd26]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2fe4fd26]{gap:6px}.page-switcher-title[data-v-2fe4fd26]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2fe4fd26]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2fe4fd26]:before{height:140px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2fe4fd26]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2fe4fd26]{width:15px}.page-option-list[data-v-2fe4fd26]{top:40px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2fe4fd26]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2fe4fd26]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26]{margin-left:4px}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-2fe4fd26] #themeToggle,.tabs[data-v-2fe4fd26] #themeToggle:hover,.tabs[data-v-2fe4fd26] .language-switcher,.tabs[data-v-2fe4fd26] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.admin-header-content[data-v-8a33a938]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-8a33a938],.admin-header-content[data-v-8a33a938]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-8a33a938],.header-content .actions[data-v-8a33a938]{display:flex;align-items:center}.header-action[data-v-8a33a938]{gap:10px}.header-content .actions[data-v-8a33a938]{gap:15px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-8a33a938]:hover,.header-content .actions i[data-v-8a33a938]:hover,.header-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8a33a938]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-8a33a938]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-8a33a938]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-8a33a938]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:.95em}.header-content .actions[data-v-8a33a938]{gap:10px;margin-top:10px}}.pagination-container[data-v-8a33a938]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8a33a938]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8a33a938] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev,.pagination-container[data-v-8a33a938] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-8a33a938] .btn-next:hover,.pagination-container[data-v-8a33a938] .btn-prev:hover,.pagination-container[data-v-8a33a938] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .el-pager li.is-active,.pagination-container[data-v-8a33a938] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-8a33a938]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-8a33a938]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-8a33a938]{width:50px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-8a33a938]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-8a33a938],.pagination-container .load-more[data-v-8a33a938]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-8a33a938]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-8a33a938]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-8a33a938]:hover,.pagination-container .load-more[data-v-8a33a938]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-8a33a938]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-8a33a938]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-8a33a938] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-8a33a938]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{font-size:12px}.page-jump .jump-input[data-v-8a33a938]{width:40px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-8a33a938]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-8a33a938]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-8a33a938]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-8a33a938]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-8a33a938] .el-container,[data-v-8a33a938] .el-main{overflow:visible}[data-v-8a33a938] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner:focus{width:65vw}}.breadcrumb-container[data-v-8a33a938]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-8a33a938]{position:relative;height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;overflow:hidden;transition:background-color .2s ease,border-color .2s ease}.breadcrumb-view-toggle[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938]:before{content:"";position:absolute;top:2px;left:2px;width:28px;height:26px;border-radius:5px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(30px)}.breadcrumb-view-button[data-v-8a33a938]{position:relative;z-index:1;width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-8a33a938]:hover{color:var(--primary-color-accent)}.breadcrumb-view-button.is-active[data-v-8a33a938]{color:var(--primary-color-accent);background:transparent;box-shadow:none}.breadcrumb-view-icon[data-v-8a33a938]{width:14px;height:14px}.breadcrumb-sort-dropdown[data-v-8a33a938]{flex:0 0 auto}.breadcrumb-sort-button[data-v-8a33a938]{width:44px;height:32px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--glass-border);border-radius:10px;color:var(--el-text-color-secondary);background:var(--glass-bg);box-shadow:none;cursor:pointer;transition:color .16s ease,background-color .2s ease,border-color .2s ease}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible,.breadcrumb-sort-button[data-v-8a33a938]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent)}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible{outline:none}.breadcrumb-sort-icon[data-v-8a33a938]{width:30px;height:18px;overflow:visible}.sort-field-glyph[data-v-8a33a938],.sort-order-glyph[data-v-8a33a938]{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.sort-order-glyph[data-v-8a33a938]{stroke-width:1.9}@media (max-width:768px){.breadcrumb-container[data-v-8a33a938]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-8a33a938]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-toggle[data-v-8a33a938]:before{width:24px;height:22px;border-radius:6px}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(26px)}.breadcrumb-view-button[data-v-8a33a938]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-8a33a938]{width:12px;height:12px}.breadcrumb-sort-button[data-v-8a33a938]{width:40px;height:28px;border-radius:8px}.breadcrumb-sort-icon[data-v-8a33a938]{width:27px;height:16px}}.stats-badge[data-v-8a33a938]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--glass-bg);padding:4px 12px;border-radius:12px;border:1px solid var(--glass-border);box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.stats-badge-icon[data-v-8a33a938]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8a33a938]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8a33a938]{font-size:9px}}.search-area[data-v-8a33a938]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-8a33a938]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-8a33a938]{display:flex;align-items:center}.search-card[data-v-8a33a938] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 14px;border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-8a33a938] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8a33a938] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8a33a938] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-8a33a938] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner:focus{width:55vw}}.search-icon[data-v-8a33a938]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-8a33a938]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.search-card[data-v-8a33a938] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8a33a938]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-8a33a938]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:86px}}.content[data-v-8a33a938]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-8a33a938],.list-view.is-drag-selecting[data-v-8a33a938]{cursor:crosshair}.content.is-drag-selecting[data-v-8a33a938] .img-card:hover,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-8a33a938] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-8a33a938] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-8a33a938] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-8a33a938]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-8a33a938]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-8a33a938]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-8a33a938]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-8a33a938]{padding:80px 20px}@media (max-width:768px){.content[data-v-8a33a938]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-8a33a938]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-8a33a938]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-8a33a938]{display:flex;align-items:center}.list-col-checkbox[data-v-8a33a938]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-8a33a938] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}@media (max-width:768px){.list-header[data-v-8a33a938]{display:none}}.question-icon[data-v-8a33a938]{margin:0 3px}.breadcrumb[data-v-8a33a938]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.breadcrumb[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-home-icon[data-v-8a33a938]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent)}[data-v-8a33a938] .el-breadcrumb__item{cursor:pointer}[data-v-8a33a938] .el-breadcrumb,[data-v-8a33a938] .el-breadcrumb__inner,[data-v-8a33a938] .el-breadcrumb__item,[data-v-8a33a938] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-8a33a938] .el-breadcrumb__inner{cursor:pointer}[data-v-8a33a938] .el-breadcrumb__inner:hover{color:var(--primary-color-accent)}.mobile-directory-trigger[data-v-8a33a938]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--glass-bg);border-radius:8px;border:1px solid var(--glass-border);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.mobile-directory-trigger[data-v-8a33a938]:active{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938],.breadcrumb[data-v-8a33a938],.mobile-directory-trigger[data-v-8a33a938],.refresh-btn[data-v-8a33a938],.stats-badge[data-v-8a33a938]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.mobile-directory-icon[data-v-8a33a938]{flex:0 0 auto;font-size:12px;color:var(--primary-color-accent)}.mobile-directory-path[data-v-8a33a938]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-8a33a938]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8a33a938]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8a33a938]{display:flex}.desktop-only[data-v-8a33a938]{display:none!important}.breadcrumb-container[data-v-8a33a938]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-8a33a938]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px}.sort-dropdown-menu[data-v-8a33a938]{min-width:205px}.sort-order-wrapper[data-v-8a33a938]{padding:0 12px;text-align:center}.sort-divider[data-v-8a33a938]{margin:8px 0!important}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item{justify-content:space-between}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item.is-selected{color:var(--primary-color-accent)}.sort-field-check[data-v-8a33a938]{width:12px;margin-left:16px} \ No newline at end of file diff --git a/frontend-dist/css/787.176e498b.css.gz b/frontend-dist/css/787.176e498b.css.gz deleted file mode 100644 index 20d3e0e..0000000 Binary files a/frontend-dist/css/787.176e498b.css.gz and /dev/null differ diff --git a/frontend-dist/css/168.448a9124.css b/frontend-dist/css/787.448a9124.css similarity index 100% rename from frontend-dist/css/168.448a9124.css rename to frontend-dist/css/787.448a9124.css diff --git a/frontend-dist/css/168.448a9124.css.gz b/frontend-dist/css/787.448a9124.css.gz similarity index 100% rename from frontend-dist/css/168.448a9124.css.gz rename to frontend-dist/css/787.448a9124.css.gz diff --git a/frontend-dist/css/895.8e8c127b.css b/frontend-dist/css/895.8e8c127b.css new file mode 100644 index 0000000..7be47be --- /dev/null +++ b/frontend-dist/css/895.8e8c127b.css @@ -0,0 +1 @@ +.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-feeadb1c]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-feeadb1c]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-feeadb1c]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-feeadb1c]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:color-mix(in srgb,var(--primary-color) 10%,transparent);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-feeadb1c]{font-size:15px;font-weight:600;color:var(--primary-color-accent);display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-feeadb1c]:before{content:"";display:inline-block;width:4px;height:16px;background:var(--primary-color-accent);border-radius:2px}.mobile-drawer-close[data-v-feeadb1c]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-feeadb1c]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-feeadb1c]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-feeadb1c]{background:color-mix(in srgb,var(--primary-color) 15%,transparent);color:var(--primary-color-accent);font-weight:600}.mobile-drawer-item-icon[data-v-feeadb1c]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-feeadb1c]{opacity:1;color:var(--primary-color-accent)}.mobile-drawer-back[data-v-feeadb1c]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-feeadb1c]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-feeadb1c]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-feeadb1c]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-feeadb1c]{animation:slideInLeft-feeadb1c .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-feeadb1c]{animation:slideOutLeft-feeadb1c .2s ease-in}.drawer-slide-enter-from[data-v-feeadb1c],.drawer-slide-leave-to[data-v-feeadb1c]{opacity:0}@keyframes slideInLeft-feeadb1c{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-feeadb1c{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-f5c66568]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-f5c66568]{width:100%;max-width:100%;background:var(--mobile-action-sheet-bg);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--mobile-action-sheet-border)}html.dark .bottom-sheet[data-v-f5c66568]{box-shadow:none}.bottom-sheet-header[data-v-f5c66568]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-f5c66568]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-f5c66568]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-sheet-content[data-v-f5c66568]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-f5c66568]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--mobile-action-sheet-item-bg);color:var(--el-text-color-primary)}.bottom-sheet-item[data-v-f5c66568]:active{transform:scale(.98);background:var(--mobile-action-sheet-item-active-bg)}.bottom-sheet-icon[data-v-f5c66568]{font-size:20px;width:28px;text-align:center;color:var(--primary-color-accent)}.bottom-sheet-danger .bottom-sheet-icon[data-v-f5c66568],.bottom-sheet-danger[data-v-f5c66568]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-f5c66568]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-f5c66568]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-f5c66568]{animation:slideUp-f5c66568 .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-f5c66568]{animation:slideDown-f5c66568 .2s ease-in}.bottom-sheet-enter-from[data-v-f5c66568],.bottom-sheet-leave-to[data-v-f5c66568]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-f5c66568],.bottom-sheet-leave-to .bottom-sheet[data-v-f5c66568]{transform:translateY(100%)}@keyframes slideUp-f5c66568{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-f5c66568{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.ai-tags[data-v-954f5f34]{margin:16px 0;padding:18px;text-align:left;border-radius:16px;border:1px solid var(--glass-border);background:var(--glass-bg);box-shadow:var(--glass-shadow)}.ai-footer-actions[data-v-954f5f34],.ai-footer[data-v-954f5f34],.ai-heading[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-result-heading[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{display:flex;align-items:center;gap:10px}.ai-footer[data-v-954f5f34],.ai-progress-label[data-v-954f5f34],.ai-toolbar[data-v-954f5f34]{justify-content:space-between}.ai-toolbar[data-v-954f5f34]{flex-wrap:wrap}.ai-heading h4[data-v-954f5f34]{margin:0;color:var(--el-text-color-primary);font-size:15px}.ai-empty-icon[data-v-954f5f34],.ai-heading-icon[data-v-954f5f34]{display:grid;place-items:center;color:var(--el-color-primary);background:var(--el-color-primary-light-9);border-radius:12px}.ai-heading-icon[data-v-954f5f34]{width:34px;height:34px;font-size:16px}.help-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);cursor:pointer}.ai-tags .el-button[data-v-954f5f34]{gap:7px}.ai-tags[data-v-954f5f34] .el-button>span{display:inline-flex;align-items:center;gap:7px}.ai-empty[data-v-954f5f34]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:28px 12px 12px}.ai-empty-icon[data-v-954f5f34]{width:52px;height:52px;font-size:22px}.ai-empty-title[data-v-954f5f34],.ai-selection[data-v-954f5f34]{color:var(--el-text-color-secondary);font-size:13px;overflow-wrap:anywhere}.ai-result[data-v-954f5f34] .el-alert__title{overflow-wrap:anywhere}.ai-ready[data-v-954f5f34]{padding-bottom:20px}.ai-progress[data-v-954f5f34]{margin-top:18px}.ai-progress-label[data-v-954f5f34]{color:var(--el-text-color-secondary);margin-bottom:10px;font-size:13px}.ai-results[data-v-954f5f34]{display:grid;gap:12px;margin-top:18px}.ai-result[data-v-954f5f34]{border:1px solid var(--el-border-color-light);border-radius:12px;padding:14px;background:var(--el-fill-color-blank)}.ai-result-heading[data-v-954f5f34]{margin-bottom:12px}.ai-file-icon[data-v-954f5f34]{color:var(--el-text-color-secondary);flex-shrink:0}.ai-file[data-v-954f5f34]{flex:1;min-width:0;font-weight:500;overflow-wrap:anywhere;line-height:1.5}.ai-result-heading>.el-tag[data-v-954f5f34]{flex-shrink:0}.ai-tag-list[data-v-954f5f34]{display:flex;flex-wrap:wrap;gap:8px}.ai-tag-list .el-check-tag[data-v-954f5f34],.ai-tag-list .el-tag[data-v-954f5f34]{max-width:100%;height:auto;white-space:normal;overflow-wrap:anywhere}.ai-tag-list [aria-disabled=true][data-v-954f5f34]{cursor:default;opacity:.65}.ai-save-error[data-v-954f5f34]{margin-top:12px}.ai-footer[data-v-954f5f34]{margin-top:18px;padding-top:16px;border-top:1px solid var(--el-border-color-lighter);flex-wrap:wrap}.ai-footer-actions[data-v-954f5f34]{flex-wrap:wrap;margin-left:auto}.ai-footer-actions .el-button[data-v-954f5f34]{height:32px;box-sizing:border-box;padding:8px 15px}.ai-footer-actions .el-button+.el-button[data-v-954f5f34]{margin-left:0}@media (max-width:480px){.ai-tags[data-v-954f5f34]{padding:14px}.ai-footer-actions[data-v-954f5f34]{width:100%}.ai-footer-actions .el-button[data-v-954f5f34]{flex:1}}.tag-dialog-content[data-v-3cead2c5]{display:flex;flex-direction:column;gap:16px;text-align:left;min-width:0}.tag-section[data-v-3cead2c5]{padding:16px;border:1px solid var(--el-border-color-lighter);border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));min-width:0}.tag-section-header[data-v-3cead2c5]{display:flex;align-items:center;gap:10px;margin-bottom:16px}.tag-section-header h4[data-v-3cead2c5]{flex:1;min-width:0;margin:0;color:var(--el-text-color-primary);font-size:14px;font-weight:600;line-height:1.5}.tag-section-icon[data-v-3cead2c5]{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;border-radius:9px;background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.tag-section-icon.muted[data-v-3cead2c5]{background:var(--el-fill-color);color:var(--el-text-color-secondary)}.tag-section-icon.danger[data-v-3cead2c5]{background:var(--el-color-danger-light-9);color:var(--el-color-danger)}.tag-section-actions[data-v-3cead2c5]{display:flex;align-items:center;gap:8px;flex-shrink:0}.tag-help-button[data-v-3cead2c5]{display:grid;place-items:center;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--el-text-color-secondary);cursor:pointer;font-size:13px}.tag-help-button[data-v-3cead2c5]:hover{color:var(--el-color-primary);background:var(--el-fill-color-light)}.tag-help-button[data-v-3cead2c5]:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.tag-count[data-v-3cead2c5]{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:24px;height:24px;line-height:1;padding:2px 8px;border-radius:6px;background:var(--dialog-control-bg-color,var(--el-bg-color));color:var(--el-text-color-secondary);font-size:12px;font-variant-numeric:tabular-nums}.input-section[data-v-3cead2c5]{position:relative;margin-bottom:14px}.tag-input-row[data-v-3cead2c5]{display:flex;gap:8px;align-items:center}.tag-input-row[data-v-3cead2c5] .el-input{flex:1;min-width:0}.tag-input-row[data-v-3cead2c5] .el-input__wrapper{min-height:36px;box-sizing:border-box;border-radius:9px;background:var(--dialog-control-bg-color,var(--el-bg-color))}.tag-input-row .tag-add-button[data-v-3cead2c5]{width:36px;height:36px;flex-shrink:0;padding:0;border-radius:9px}.tags-container[data-v-3cead2c5]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.tag-chip[data-v-3cead2c5]{max-width:100%;height:auto;min-height:28px;padding:4px 10px;font-size:13px;line-height:1.5}.tag-chip[data-v-3cead2c5] .el-tag__content{min-width:0;white-space:normal;overflow-wrap:anywhere}.tag-chip[data-v-3cead2c5] .el-tag__close{flex-shrink:0;margin-left:7px}.tag-choice[data-v-3cead2c5]{cursor:pointer;transition:color .2s,border-color .2s,background-color .2s}.tag-choice[data-v-3cead2c5]:focus-visible,.tag-choice[data-v-3cead2c5]:hover{background:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-5);color:var(--el-color-primary)}.tag-choice[aria-disabled=true][data-v-3cead2c5]{opacity:.6;cursor:default;pointer-events:none}.suggestion-item[data-v-3cead2c5]:focus-visible,.tag-choice[data-v-3cead2c5]:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.empty-message[data-v-3cead2c5]{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px 12px;border:1px dashed var(--el-border-color-lighter);border-radius:9px;color:var(--el-text-color-secondary);font-size:13px;line-height:1.6}.empty-message>svg[data-v-3cead2c5]{flex-shrink:0;opacity:.7}.suggestions-panel[data-v-3cead2c5]{position:absolute;top:calc(100% + 6px);left:0;right:44px;z-index:10;padding:5px;border:1px solid var(--el-border-color-light);border-radius:10px;background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light);max-height:160px;overflow-y:auto}.suggestion-item[data-v-3cead2c5]{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:6px;background:transparent;color:var(--el-text-color-regular);text-align:left;font:inherit;font-size:13px;cursor:pointer}.suggestion-item>svg[data-v-3cead2c5]{flex-shrink:0;color:var(--el-text-color-secondary);font-size:11px}.suggestion-item>span[data-v-3cead2c5]{min-width:0;overflow-wrap:anywhere}.suggestion-item[data-v-3cead2c5]:focus-visible,.suggestion-item[data-v-3cead2c5]:hover{background:var(--el-fill-color-light);color:var(--el-color-primary)}.suggestion-item[data-v-3cead2c5]:disabled{opacity:.6;cursor:default}.action-buttons[data-v-3cead2c5]{display:flex;justify-content:flex-end;padding-top:16px;margin-top:16px;border-top:1px solid var(--el-border-color-lighter)}.action-buttons .el-button[data-v-3cead2c5],.dialog-footer .el-button[data-v-3cead2c5]{border-radius:9px}.tag-dialog-content[data-v-3cead2c5] .el-button>span{display:inline-flex;align-items:center;gap:7px}.tag-dialog-content[data-v-3cead2c5] .el-alert__title{overflow-wrap:anywhere;line-height:1.6}.tag-danger-section[data-v-3cead2c5]{border-color:var(--el-color-danger-light-7)}.tag-file-summary[data-v-3cead2c5]{display:flex;align-items:center;gap:8px;color:var(--el-text-color-secondary);font-size:13px}.tag-file-summary>svg[data-v-3cead2c5]{color:var(--el-color-primary)}.dialog-footer[data-v-3cead2c5]{display:flex;justify-content:flex-end}.tag-dialog-content[data-v-3cead2c5] .ai-tags{margin:0;border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));border-color:var(--el-border-color-lighter);box-shadow:none}.tag-operation-tabs[data-v-3cead2c5]{min-width:0}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__content{overflow:visible}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__header{margin-bottom:16px}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__active-bar,.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav-wrap:after{display:none}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav{display:flex;float:none;width:100%;box-sizing:border-box;padding:4px;gap:4px;border:1px solid var(--el-border-color-lighter);border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter))}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__item{flex:1;min-width:0;height:38px;padding:0 10px!important;border-radius:8px;color:var(--el-text-color-secondary);font-size:13px;transition:color .2s,background-color .2s}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__item:last-child{flex:1.8}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__item.is-active{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__item:hover{color:var(--el-color-primary)}.tag-tab-label[data-v-3cead2c5]{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;line-height:1.3}.tag-tab-label>svg[data-v-3cead2c5]{flex-shrink:0}.tag-tab-label>span[data-v-3cead2c5]{white-space:normal}@media (max-width:480px){.tag-section[data-v-3cead2c5]{padding:12px}.tag-section-header[data-v-3cead2c5]{gap:8px;margin-bottom:12px}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));transform:none!important}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav-wrap.is-scrollable{padding:0}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav-next,.tag-operation-tabs[data-v-3cead2c5] .el-tabs__nav-prev{display:none}.tag-operation-tabs[data-v-3cead2c5] .el-tabs__item{height:42px}.action-buttons .el-button[data-v-3cead2c5]{width:100%;min-height:36px;height:auto;padding:9px 12px}.action-buttons[data-v-3cead2c5] .el-button>span{white-space:normal;line-height:1.4}}.tag-dialog-content[data-v-828386e4]{display:flex;flex-direction:column;gap:16px;text-align:left;min-width:0}.tag-section[data-v-828386e4]{padding:16px;border:1px solid var(--el-border-color-lighter);border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));min-width:0}.tag-section-header[data-v-828386e4]{display:flex;align-items:center;gap:10px;margin-bottom:16px}.tag-section-header h4[data-v-828386e4]{flex:1;min-width:0;margin:0;color:var(--el-text-color-primary);font-size:14px;font-weight:600;line-height:1.5}.tag-section-icon[data-v-828386e4]{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;border-radius:9px;background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.tag-section-icon.muted[data-v-828386e4]{background:var(--el-fill-color);color:var(--el-text-color-secondary)}.tag-section-icon.danger[data-v-828386e4]{background:var(--el-color-danger-light-9);color:var(--el-color-danger)}.tag-section-actions[data-v-828386e4]{display:flex;align-items:center;gap:8px;flex-shrink:0}.tag-help-button[data-v-828386e4]{display:grid;place-items:center;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--el-text-color-secondary);cursor:pointer;font-size:13px}.tag-help-button[data-v-828386e4]:hover{color:var(--el-color-primary);background:var(--el-fill-color-light)}.tag-help-button[data-v-828386e4]:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.tag-count[data-v-828386e4]{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:24px;height:24px;line-height:1;padding:2px 8px;border-radius:6px;background:var(--dialog-control-bg-color,var(--el-bg-color));color:var(--el-text-color-secondary);font-size:12px;font-variant-numeric:tabular-nums}.input-section[data-v-828386e4]{position:relative;margin-bottom:14px}.tag-input-row[data-v-828386e4]{display:flex;gap:8px;align-items:center}.tag-input-row[data-v-828386e4] .el-input{flex:1;min-width:0}.tag-input-row[data-v-828386e4] .el-input__wrapper{min-height:36px;box-sizing:border-box;border-radius:9px;background:var(--dialog-control-bg-color,var(--el-bg-color))}.tag-input-row .tag-add-button[data-v-828386e4]{width:36px;height:36px;flex-shrink:0;padding:0;border-radius:9px}.tags-container[data-v-828386e4]{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.tag-chip[data-v-828386e4]{max-width:100%;height:auto;min-height:28px;padding:4px 10px;font-size:13px;line-height:1.5}.tag-chip[data-v-828386e4] .el-tag__content{min-width:0;white-space:normal;overflow-wrap:anywhere}.tag-chip[data-v-828386e4] .el-tag__close{flex-shrink:0;margin-left:7px}.tag-choice[data-v-828386e4]{cursor:pointer;transition:color .2s,border-color .2s,background-color .2s}.tag-choice[data-v-828386e4]:focus-visible,.tag-choice[data-v-828386e4]:hover{background:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-5);color:var(--el-color-primary)}.tag-choice[aria-disabled=true][data-v-828386e4]{opacity:.6;cursor:default;pointer-events:none}.suggestion-item[data-v-828386e4]:focus-visible,.tag-choice[data-v-828386e4]:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.empty-message[data-v-828386e4]{display:flex;align-items:center;justify-content:center;gap:8px;padding:20px 12px;border:1px dashed var(--el-border-color-lighter);border-radius:9px;color:var(--el-text-color-secondary);font-size:13px;line-height:1.6}.empty-message>svg[data-v-828386e4]{flex-shrink:0;opacity:.7}.suggestions-panel[data-v-828386e4]{position:absolute;top:calc(100% + 6px);left:0;right:44px;z-index:10;padding:5px;border:1px solid var(--el-border-color-light);border-radius:10px;background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light);max-height:160px;overflow-y:auto}.suggestion-item[data-v-828386e4]{display:flex;align-items:center;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:6px;background:transparent;color:var(--el-text-color-regular);text-align:left;font:inherit;font-size:13px;cursor:pointer}.suggestion-item>svg[data-v-828386e4]{flex-shrink:0;color:var(--el-text-color-secondary);font-size:11px}.suggestion-item>span[data-v-828386e4]{min-width:0;overflow-wrap:anywhere}.suggestion-item[data-v-828386e4]:focus-visible,.suggestion-item[data-v-828386e4]:hover{background:var(--el-fill-color-light);color:var(--el-color-primary)}.suggestion-item[data-v-828386e4]:disabled{opacity:.6;cursor:default}.action-buttons[data-v-828386e4]{display:flex;justify-content:flex-end;padding-top:16px;margin-top:16px;border-top:1px solid var(--el-border-color-lighter)}.action-buttons .el-button[data-v-828386e4],.dialog-footer .el-button[data-v-828386e4]{border-radius:9px}.tag-dialog-content[data-v-828386e4] .el-button>span{display:inline-flex;align-items:center;gap:7px}.tag-dialog-content[data-v-828386e4] .el-alert__title{overflow-wrap:anywhere;line-height:1.6}.tag-danger-section[data-v-828386e4]{border-color:var(--el-color-danger-light-7)}.tag-file-summary[data-v-828386e4]{display:flex;align-items:center;gap:8px;color:var(--el-text-color-secondary);font-size:13px}.tag-file-summary>svg[data-v-828386e4]{color:var(--el-color-primary)}.dialog-footer[data-v-828386e4]{display:flex;justify-content:flex-end}.tag-dialog-content[data-v-828386e4] .ai-tags{margin:0;border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter));border-color:var(--el-border-color-lighter);box-shadow:none}.tag-operation-tabs[data-v-828386e4]{min-width:0}.tag-operation-tabs[data-v-828386e4] .el-tabs__content{overflow:visible}.tag-operation-tabs[data-v-828386e4] .el-tabs__header{margin-bottom:16px}.tag-operation-tabs[data-v-828386e4] .el-tabs__active-bar,.tag-operation-tabs[data-v-828386e4] .el-tabs__nav-wrap:after{display:none}.tag-operation-tabs[data-v-828386e4] .el-tabs__nav{display:flex;float:none;width:100%;box-sizing:border-box;padding:4px;gap:4px;border:1px solid var(--el-border-color-lighter);border-radius:12px;background:var(--dialog-section-bg-color,var(--el-fill-color-lighter))}.tag-operation-tabs[data-v-828386e4] .el-tabs__item{flex:1;min-width:0;height:38px;padding:0 10px!important;border-radius:8px;color:var(--el-text-color-secondary);font-size:13px;transition:color .2s,background-color .2s}.tag-operation-tabs[data-v-828386e4] .el-tabs__item:last-child{flex:1.8}.tag-operation-tabs[data-v-828386e4] .el-tabs__item.is-active{background:var(--el-color-primary-light-9);color:var(--el-color-primary)}.tag-operation-tabs[data-v-828386e4] .el-tabs__item:hover{color:var(--el-color-primary)}.tag-tab-label[data-v-828386e4]{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;line-height:1.3}.tag-tab-label>svg[data-v-828386e4]{flex-shrink:0}.tag-tab-label>span[data-v-828386e4]{white-space:normal}@media (max-width:480px){.tag-section[data-v-828386e4]{padding:12px}.tag-section-header[data-v-828386e4]{gap:8px;margin-bottom:12px}.tag-operation-tabs[data-v-828386e4] .el-tabs__nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));transform:none!important}.tag-operation-tabs[data-v-828386e4] .el-tabs__nav-wrap.is-scrollable{padding:0}.tag-operation-tabs[data-v-828386e4] .el-tabs__nav-next,.tag-operation-tabs[data-v-828386e4] .el-tabs__nav-prev{display:none}.tag-operation-tabs[data-v-828386e4] .el-tabs__item{height:42px}.action-buttons .el-button[data-v-828386e4]{width:100%;min-height:36px;height:auto;padding:9px 12px}.action-buttons[data-v-828386e4] .el-button>span{white-space:normal;line-height:1.4}}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-550287cc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-550287cc]{margin-left:0!important}.video-preview[data-v-550287cc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-550287cc],.video-preview[data-v-550287cc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-550287cc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-550287cc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-550287cc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-550287cc]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-550287cc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-550287cc] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-550287cc] .el-descriptions__content .el-tag,[data-v-550287cc] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-550287cc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-550287cc] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-550287cc]{justify-content:center}}.batch-floating-bar[data-v-49301bcc]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:8px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:18px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.batch-selection-summary[data-v-49301bcc]{display:flex;align-items:center;flex:0 0 auto;padding:0 4px}.batch-selection-count[data-v-49301bcc]{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border:1px solid color-mix(in srgb,var(--primary-color) 28%,transparent);border-radius:10px;color:var(--primary-color-accent);background:color-mix(in srgb,var(--primary-color) 10%,transparent);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-49301bcc]{width:1px;height:24px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-49301bcc]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-49301bcc]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:1px solid transparent;border-radius:12px;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:border-color .2s ease,background-color .2s ease,color .2s ease}.batch-floating-btn[data-v-49301bcc]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.ban[data-v-49301bcc],.batch-floating-btn.copy[data-v-49301bcc],.batch-floating-btn.download[data-v-49301bcc],.batch-floating-btn.move[data-v-49301bcc],.batch-floating-btn.tag[data-v-49301bcc],.batch-floating-btn.white[data-v-49301bcc]{color:var(--admin-batch-action-color)}.batch-floating-btn.danger[data-v-49301bcc]{color:var(--admin-batch-delete-color)}.batch-floating-btn.danger[data-v-49301bcc]:hover{border-color:color-mix(in srgb,var(--admin-batch-delete-color) 32%,transparent);color:var(--admin-batch-delete-color);background:color-mix(in srgb,var(--admin-batch-delete-color) 10%,transparent)}.batch-floating-btn.ghost[data-v-49301bcc]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-49301bcc]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-49301bcc],.batch-toolbar-leave-active[data-v-49301bcc]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-49301bcc]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:6px;padding:6px;border-radius:16px}.batch-selection-summary[data-v-49301bcc]{padding:0 1px}.batch-selection-count[data-v-49301bcc]{min-width:24px;height:26px;padding:0 7px;font-size:12px;border-radius:9px}.batch-toolbar-divider[data-v-49301bcc]{height:22px}.batch-floating-actions[data-v-49301bcc]{flex:1;min-width:0;gap:4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-49301bcc]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-49301bcc]{width:30px;height:30px;min-width:30px;padding:0;border-radius:10px}.batch-floating-icon[data-v-49301bcc]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-49301bcc],.batch-toolbar-leave-to[data-v-49301bcc]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-49301bcc],.batch-toolbar-leave-from[data-v-49301bcc]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.list-item[data-v-25a3242c]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-25a3242c]:last-child{border-bottom:none}.list-item[data-v-25a3242c]:hover{background:var(--el-fill-color-light)}.list-col[data-v-25a3242c]{display:flex;align-items:center}.list-col-checkbox[data-v-25a3242c]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}.list-col-preview[data-v-25a3242c]{justify-content:center;cursor:pointer}.list-col-name[data-v-25a3242c]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-25a3242c]:hover{color:var(--primary-color-accent)}.filename-ellipsis[data-v-25a3242c]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-25a3242c]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-25a3242c]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-25a3242c]{font-size:13px}.address-box[data-v-25a3242c],.channel-name-box[data-v-25a3242c]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;color:var(--el-text-color-secondary);max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none}.address-box[data-v-25a3242c]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-25a3242c]{width:70px}.address-box[data-v-25a3242c]::-webkit-scrollbar,.channel-name-box[data-v-25a3242c]::-webkit-scrollbar{display:none}.list-col-tags[data-v-25a3242c]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-25a3242c]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-25a3242c]{min-width:30px;text-align:center}.list-empty[data-v-25a3242c]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-25a3242c]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-25a3242c]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-25a3242c]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-25a3242c]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-25a3242c]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-25a3242c]:hover{background:var(--primary-color);color:#fff}.list-action-danger[data-v-25a3242c]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-25a3242c]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-25a3242c],.list-col-channel-name[data-v-25a3242c],.list-col-channel[data-v-25a3242c],.list-col-date[data-v-25a3242c],.list-col-size[data-v-25a3242c],.list-col-tags[data-v-25a3242c]{display:none}.list-col-name[data-v-25a3242c]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-25a3242c]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-25a3242c]{font-size:24px}.list-file-icon[data-v-25a3242c]{font-size:21px}.list-col-actions[data-v-25a3242c]{gap:3px}.list-action-btn[data-v-25a3242c]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-25a3242c]{width:18px;min-width:18px}.list-col-checkbox[data-v-25a3242c] .el-checkbox{--el-checkbox-input-width:14px;--el-checkbox-input-height:14px}}.img-card[data-v-956fb02e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-956fb02e]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-956fb02e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-956fb02e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-956fb02e] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-956fb02e]:hover{transform:scale(1.05)}.image-preview[data-v-956fb02e],.video-preview[data-v-956fb02e]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.video-preview[data-v-956fb02e]{cursor:pointer}.img-card:hover .file-icon[data-v-956fb02e],.img-card:hover .image-preview[data-v-956fb02e],.img-card:hover .video-preview[data-v-956fb02e]{transform:scale(1.03)}.image-preview[data-v-956fb02e]:hover{opacity:.8}.file-short-info[data-v-956fb02e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-956fb02e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-956fb02e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-956fb02e]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-956fb02e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-956fb02e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-956fb02e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-956fb02e]{cursor:pointer}.card-bottom-overlay[data-v-956fb02e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-956fb02e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-956fb02e]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-956fb02e]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-956fb02e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-956fb02e],.action-bar-right[data-v-956fb02e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-956fb02e]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-956fb02e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-956fb02e]:active{transform:scale(.95)}.action-btn-danger[data-v-956fb02e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-956fb02e]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-956fb02e] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-956fb02e]:hover{transform:none}.file-short-info[data-v-956fb02e]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-956fb02e],.primary-tag[data-v-956fb02e],.success-tag[data-v-956fb02e]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-956fb02e]{padding:22px 6px 6px}.file-name[data-v-956fb02e]{font-size:11px}.file-icon[data-v-956fb02e]{font-size:34px}.action-bar[data-v-956fb02e]{display:none!important}}@keyframes skeleton-shimmer-956fb02e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-956fb02e]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-956fb02e 1.5s ease-in-out infinite}.error-wrapper[data-v-956fb02e]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--skeleton-bg-color);cursor:pointer;gap:8px}.error-icon[data-v-956fb02e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-956fb02e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-534cf01b]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-534cf01b] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-534cf01b] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-534cf01b] .el-checkbox__inner{width:14px!important;min-width:14px;height:14px!important;min-height:14px;border-radius:50%!important}.img-card[data-v-534cf01b]:hover{transform:scale(1.05)}.folder-card[data-v-534cf01b]{cursor:pointer}.folder-icon[data-v-534cf01b]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-534cf01b]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-534cf01b]{transform:scale(1.03)}.card-bottom-overlay[data-v-534cf01b]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-534cf01b]{display:flex;align-items:center;justify-content:center}.file-name[data-v-534cf01b]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-534cf01b]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-534cf01b]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-534cf01b],.action-bar-right[data-v-534cf01b]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-534cf01b]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-534cf01b]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-534cf01b]:active{transform:scale(.95)}.action-btn-danger[data-v-534cf01b]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-534cf01b]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-534cf01b] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-534cf01b]:hover{transform:none}.folder-icon-svg[data-v-534cf01b]{font-size:36px}.card-bottom-overlay[data-v-534cf01b]{padding:22px 6px 6px}.file-name[data-v-534cf01b]{font-size:11px}.action-bar[data-v-534cf01b]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.dashboard-checkbox[data-v-3757bfa7]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .2s ease,border-color .2s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid var(--glass-border);border-radius:50%;background:transparent;transition:border-color .18s ease,background .18s ease}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:hover{border-color:var(--glass-border-hover)}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:focus-visible{outline:none;border-color:color-mix(in srgb,var(--primary-color-accent) 42%,transparent)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7],.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]{border-color:var(--glass-border);background:var(--glass-bg)}.dashboard-checkbox--breadcrumb.checked[data-v-3757bfa7]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-3757bfa7]:before{border-color:hsla(0,0%,100%,.4);background:var(--primary-color)}.dashboard-checkbox-mark[data-v-3757bfa7]{position:relative;z-index:1;width:10px;height:10px;opacity:0;transform:scale(.72);transition:opacity .16s ease,transform .16s ease}.dashboard-checkbox.checked .dashboard-checkbox-mark[data-v-3757bfa7],.dashboard-checkbox.indeterminate .dashboard-checkbox-mark[data-v-3757bfa7]{opacity:1;transform:scale(1)}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--breadcrumb[data-v-3757bfa7]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-3757bfa7]:before{inset:6px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-3757bfa7]{width:10px;height:10px}}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-42919522]{flex-shrink:0}.filter-trigger[data-v-42919522]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-42919522]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-42919522]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.filter-badge[data-v-42919522] .el-badge__content{background:var(--primary-color);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-42919522]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-42919522]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-42919522]:last-of-type{border-bottom:none}.filter-title[data-v-42919522]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-42919522],.filter-options[data-v-42919522] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-42919522] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:6px;transition:all .2s ease}.filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 10%,transparent)}html.dark .filter-options[data-v-42919522] .el-checkbox:hover{background:color-mix(in srgb,var(--el-text-color-primary) 14%,transparent)}.filter-options[data-v-42919522] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-42919522] .el-checkbox__input.is-checked+.el-checkbox__label{color:var(--primary-color-accent)}.channel-group-title[data-v-42919522]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-42919522]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-42919522] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--primary-color);border-color:var(--primary-color)}.filter-actions[data-v-42919522]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-42919522]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-42919522]:hover:not(:disabled){background:var(--primary-color);border-color:var(--primary-color-accent);color:#fff}.filter-actions .el-button[data-v-42919522]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-42919522]{min-width:160px;max-height:320px}.filter-section[data-v-42919522]{padding:6px 10px}.filter-title[data-v-42919522]{font-size:11px;margin-bottom:4px}.filter-options[data-v-42919522] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-42919522] .el-checkbox__label{font-size:12px}.header-icon[data-v-42919522]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-2fe4fd26]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-2fe4fd26]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-2fe4fd26]{z-index:1200}.page-switcher-sheet[data-v-2fe4fd26]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-2fe4fd26]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:160px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-2fe4fd26]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-2fe4fd26]{line-height:1}.page-switcher-arrow[data-v-2fe4fd26]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-2fe4fd26]{transform:rotate(180deg)}.page-option[data-v-2fe4fd26]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-2fe4fd26]{position:absolute;top:45px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-2fe4fd26]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-2fe4fd26]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-2fe4fd26]{opacity:1}.page-switcher.is-open .page-option-list[data-v-2fe4fd26]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-2fe4fd26]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26],.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26],.page-option.is-current>.page-switcher-title[data-v-2fe4fd26]{translate:0 1px}.page-option[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-2fe4fd26]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-2fe4fd26]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-2fe4fd26]{gap:6px}.page-switcher-title[data-v-2fe4fd26]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-2fe4fd26]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-2fe4fd26]:before{height:140px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-2fe4fd26]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-2fe4fd26]{width:15px}.page-option-list[data-v-2fe4fd26]{top:40px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-2fe4fd26]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-2fe4fd26]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-2fe4fd26]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-2fe4fd26]{margin-left:4px}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-2fe4fd26]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-2fe4fd26] #themeToggle,.tabs[data-v-2fe4fd26] #themeToggle:hover,.tabs[data-v-2fe4fd26] .language-switcher,.tabs[data-v-2fe4fd26] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.admin-header-content[data-v-8a33a938]{display:flex;justify-content:space-between;align-items:center;min-height:45px;padding:10px 24px;position:fixed;top:8px;left:50%;width:calc(95% - 16px);z-index:2001;border:1px solid var(--glass-border);border-radius:16px;backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);-webkit-backdrop-filter:blur(var(--glass-backdrop-blur)) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease}.admin-header-content[data-v-8a33a938],.admin-header-content[data-v-8a33a938]:hover{background:var(--glass-bg);box-shadow:none;transform:translateX(-50%)}.header-action[data-v-8a33a938],.header-content .actions[data-v-8a33a938]{display:flex;align-items:center}.header-action[data-v-8a33a938]{gap:10px}.header-content .actions[data-v-8a33a938]{gap:15px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:1.5em;cursor:pointer;transition:color .3s ease,transform .3s ease;color:var(--admin-container-color);outline:none}.header-content .actions .el-dropdown-link i[data-v-8a33a938]:hover,.header-content .actions i[data-v-8a33a938]:hover,.header-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8a33a938]{color:var(--admin-container-color)}.header-content .actions .disabled[data-v-8a33a938]{color:var(--el-text-color-disabled);pointer-events:none}.header-content .actions .enabled[data-v-8a33a938]{color:var(--primary-color-accent)}@media (max-width:768px){.admin-header-content[data-v-8a33a938]{flex-direction:column;top:6px;width:calc(100% - 32px);padding:6px 12px;gap:4px;border-radius:14px}.header-content .actions i[data-v-8a33a938],.header-icon[data-v-8a33a938]{font-size:.95em}.header-content .actions[data-v-8a33a938]{gap:10px;margin-top:10px}}.pagination-container[data-v-8a33a938]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8a33a938]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8a33a938] .el-pagination{--el-pagination-button-bg-color:var(--glass-bg);--el-pagination-hover-color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev,.pagination-container[data-v-8a33a938] .el-pager li{min-width:36px;height:36px;margin:0 4px;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--el-text-color-secondary);box-shadow:none;font-weight:500;line-height:36px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container[data-v-8a33a938] .btn-next:hover,.pagination-container[data-v-8a33a938] .btn-prev:hover,.pagination-container[data-v-8a33a938] .el-pager li:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)}.pagination-container[data-v-8a33a938] .el-pager li.is-active,.pagination-container[data-v-8a33a938] .el-pager li.is-active:hover{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none!important}.pagination-right[data-v-8a33a938]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{color:var(--el-text-color-secondary);font-size:13px;white-space:nowrap}.page-jump[data-v-8a33a938]{display:flex;align-items:center;gap:6px}.page-jump .jump-input[data-v-8a33a938]{width:50px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:28px;padding:0 8px;border:1px solid var(--glass-border);border-radius:8px;background-color:var(--glass-bg)!important;box-shadow:none;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:28px;color:var(--el-text-color-primary);line-height:28px;text-align:center}.pagination-container .refresh-btn[data-v-8a33a938]{width:36px;min-width:36px;height:36px;padding:0!important;border:1px solid var(--glass-border)!important;border-radius:10px!important;background:var(--glass-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none;font-size:14px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .refresh-btn[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)!important;background:var(--glass-header-bg)!important;color:var(--primary-color-accent)!important;box-shadow:none}.page-jump .jump-btn[data-v-8a33a938],.pagination-container .load-more[data-v-8a33a938]{border-color:var(--primary-color)!important;background:var(--primary-color)!important;color:var(--el-color-white)!important;box-shadow:none;font-weight:500;transition:background-color .25s ease,border-color .25s ease,color .25s ease}.pagination-container .load-more[data-v-8a33a938]{height:36px;padding:0 16px!important;border-radius:10px!important}.page-jump .jump-btn[data-v-8a33a938]{height:28px;padding:0 12px!important;border-radius:8px!important;font-size:12px;font-weight:600}.page-jump .jump-btn[data-v-8a33a938]:hover,.pagination-container .load-more[data-v-8a33a938]:hover{border-color:var(--el-color-primary-dark-2)!important;background:var(--el-color-primary-dark-2)!important;box-shadow:none!important}@media (max-width:768px){.pagination-container[data-v-8a33a938]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-8a33a938]{flex-wrap:wrap;justify-content:center;gap:6px;order:0}.pagination-container[data-v-8a33a938] .el-pager li{min-width:30px;height:30px;margin:0 2px;border-radius:8px!important;font-size:12px;line-height:30px}.pagination-container[data-v-8a33a938] .btn-next,.pagination-container[data-v-8a33a938] .btn-prev{display:none!important;position:static!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px}.pagination-right[data-v-8a33a938]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-8a33a938],.page-total[data-v-8a33a938]{font-size:12px}.page-jump .jump-input[data-v-8a33a938]{width:40px}.page-jump .jump-input[data-v-8a33a938] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-8a33a938] .el-input__inner{height:26px;font-size:12px;line-height:26px}.pagination-container .refresh-btn[data-v-8a33a938]{width:30px!important;min-width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px!important}.pagination-container .load-more[data-v-8a33a938]{height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:8px!important;font-size:12px!important}.page-jump .jump-btn[data-v-8a33a938]{height:26px;padding:0 10px!important;border-radius:7px!important;font-size:11px}}.container[data-v-8a33a938]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-8a33a938] .el-container,[data-v-8a33a938] .el-main{overflow:visible}[data-v-8a33a938] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner:focus{width:65vw}}.breadcrumb-container[data-v-8a33a938]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-8a33a938]{position:relative;height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--glass-border);border-radius:10px;background:var(--glass-bg);box-shadow:none;overflow:hidden;transition:background-color .2s ease,border-color .2s ease}.breadcrumb-view-toggle[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938]:before{content:"";position:absolute;top:2px;left:2px;width:28px;height:26px;border-radius:5px;background:color-mix(in srgb,var(--primary-color) 12%,transparent);transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(30px)}.breadcrumb-view-button[data-v-8a33a938]{position:relative;z-index:1;width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-8a33a938]:hover{color:var(--primary-color-accent)}.breadcrumb-view-button.is-active[data-v-8a33a938]{color:var(--primary-color-accent);background:transparent;box-shadow:none}.breadcrumb-view-icon[data-v-8a33a938]{width:14px;height:14px}.breadcrumb-sort-dropdown[data-v-8a33a938]{flex:0 0 auto}.breadcrumb-sort-button[data-v-8a33a938]{width:44px;height:32px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--glass-border);border-radius:10px;color:var(--el-text-color-secondary);background:var(--glass-bg);box-shadow:none;cursor:pointer;transition:color .16s ease,background-color .2s ease,border-color .2s ease}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible,.breadcrumb-sort-button[data-v-8a33a938]:hover{border-color:var(--glass-border-hover);color:var(--primary-color-accent)}.breadcrumb-sort-button[data-v-8a33a938]:focus-visible{outline:none}.breadcrumb-sort-icon[data-v-8a33a938]{width:30px;height:18px;overflow:visible}.sort-field-glyph[data-v-8a33a938],.sort-order-glyph[data-v-8a33a938]{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.sort-order-glyph[data-v-8a33a938]{stroke-width:1.9}@media (max-width:768px){.breadcrumb-container[data-v-8a33a938]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-8a33a938]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-toggle[data-v-8a33a938]:before{width:24px;height:22px;border-radius:6px}.breadcrumb-view-toggle.is-list[data-v-8a33a938]:before{transform:translateX(26px)}.breadcrumb-view-button[data-v-8a33a938]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-8a33a938]{width:12px;height:12px}.breadcrumb-sort-button[data-v-8a33a938]{width:40px;height:28px;border-radius:8px}.breadcrumb-sort-icon[data-v-8a33a938]{width:27px;height:16px}}.stats-badge[data-v-8a33a938]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--glass-bg);padding:4px 12px;border-radius:12px;border:1px solid var(--glass-border);box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.stats-badge-icon[data-v-8a33a938]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8a33a938]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8a33a938]{font-size:9px}}.search-area[data-v-8a33a938]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-8a33a938]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-8a33a938]{display:flex;align-items:center}.search-card[data-v-8a33a938] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 14px;border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-8a33a938] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8a33a938] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-8a33a938] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8a33a938] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__wrapper{padding:0 12px}.search-card[data-v-8a33a938] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-8a33a938] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-8a33a938] .el-input__inner:focus{width:55vw}}.search-icon[data-v-8a33a938]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-8a33a938]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent);transform:scale(1.2)}.search-card[data-v-8a33a938] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8a33a938]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-8a33a938]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-8a33a938]{padding-bottom:86px}}.content[data-v-8a33a938]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-8a33a938],.list-view.is-drag-selecting[data-v-8a33a938]{cursor:crosshair}.content.is-drag-selecting[data-v-8a33a938] .img-card:hover,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-8a33a938] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-8a33a938] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-8a33a938] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-8a33a938] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-8a33a938] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-8a33a938]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-8a33a938]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-8a33a938]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-8a33a938]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-8a33a938]{padding:80px 20px}@media (max-width:768px){.content[data-v-8a33a938]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-8a33a938]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-8a33a938]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary);border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-col[data-v-8a33a938]{display:flex;align-items:center}.list-col-checkbox[data-v-8a33a938]{justify-content:center;min-width:40px}.list-col-checkbox[data-v-8a33a938] .el-checkbox{--el-checkbox-input-width:16px;--el-checkbox-input-height:16px}@media (max-width:768px){.list-header[data-v-8a33a938]{display:none}}.question-icon[data-v-8a33a938]{margin:0 3px}.breadcrumb[data-v-8a33a938]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.breadcrumb[data-v-8a33a938]:hover{border-color:var(--glass-border-hover)}.breadcrumb-home-icon[data-v-8a33a938]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-8a33a938]:hover{color:var(--primary-color-accent)}[data-v-8a33a938] .el-breadcrumb__item{cursor:pointer}[data-v-8a33a938] .el-breadcrumb,[data-v-8a33a938] .el-breadcrumb__inner,[data-v-8a33a938] .el-breadcrumb__item,[data-v-8a33a938] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-8a33a938] .el-breadcrumb__inner{cursor:pointer}[data-v-8a33a938] .el-breadcrumb__inner:hover{color:var(--primary-color-accent)}.mobile-directory-trigger[data-v-8a33a938]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--glass-bg);border-radius:8px;border:1px solid var(--glass-border);cursor:pointer;transition:background-color .2s ease,border-color .2s ease}.mobile-directory-trigger[data-v-8a33a938]:active{border-color:var(--glass-border-hover)}.breadcrumb-view-toggle[data-v-8a33a938],.breadcrumb[data-v-8a33a938],.mobile-directory-trigger[data-v-8a33a938],.refresh-btn[data-v-8a33a938],.stats-badge[data-v-8a33a938]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.mobile-directory-icon[data-v-8a33a938]{flex:0 0 auto;font-size:12px;color:var(--primary-color-accent)}.mobile-directory-path[data-v-8a33a938]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-8a33a938]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8a33a938]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8a33a938]{display:flex}.desktop-only[data-v-8a33a938]{display:none!important}.breadcrumb-container[data-v-8a33a938]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-8a33a938]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px}.sort-dropdown-menu[data-v-8a33a938]{min-width:205px}.sort-order-wrapper[data-v-8a33a938]{padding:0 12px;text-align:center}.sort-divider[data-v-8a33a938]{margin:8px 0!important}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item{justify-content:space-between}.sort-dropdown-menu[data-v-8a33a938] .el-dropdown-menu__item.is-selected{color:var(--primary-color-accent)}.sort-field-check[data-v-8a33a938]{width:12px;margin-left:16px} \ No newline at end of file diff --git a/frontend-dist/css/895.8e8c127b.css.gz b/frontend-dist/css/895.8e8c127b.css.gz new file mode 100644 index 0000000..607aff5 Binary files /dev/null and b/frontend-dist/css/895.8e8c127b.css.gz differ diff --git a/frontend-dist/index.html b/frontend-dist/index.html index f25fb95..ce5d9a7 100644 --- a/frontend-dist/index.html +++ b/frontend-dist/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index 6829e24..53131a5 100644 Binary files a/frontend-dist/index.html.gz and b/frontend-dist/index.html.gz differ diff --git a/frontend-dist/js/168.16edcf49.js.gz b/frontend-dist/js/168.16edcf49.js.gz deleted file mode 100644 index 0500740..0000000 Binary files a/frontend-dist/js/168.16edcf49.js.gz and /dev/null differ diff --git a/frontend-dist/js/168.16edcf49.js.map.gz b/frontend-dist/js/168.16edcf49.js.map.gz deleted file mode 100644 index c644140..0000000 Binary files a/frontend-dist/js/168.16edcf49.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/787.b5df6f2f.js b/frontend-dist/js/787.b5df6f2f.js deleted file mode 100644 index 458e27d..0000000 --- a/frontend-dist/js/787.b5df6f2f.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[787],{2893:function(e,t,a){"use strict";a(85331)},3261:function(e,t,a){"use strict";a(85331)},4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,L=n.pw,E=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[E,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[E,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,L=f.date,E={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(E.crc32=e.crc32,E.compressedSize=e.compressedSize,E.uncompressedSize=e.uncompressedSize);var $=0;t&&($|=8),p||!w&&!_||($|=2048);var x=0,D=0;S&&(x|=16),"UNIX"===r?(D=798,x|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(D=20,x|=function(e){return 63&(e||0)}(f.dosPermissions)),h=L.getUTCHours(),h<<=6,h|=L.getUTCMinutes(),h<<=5,h|=L.getUTCSeconds()/2,u=L.getUTCFullYear()-1980,u<<=4,u|=L.getUTCMonth()+1,u<<=5,u|=L.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var I="";return I+="\n\0",I+=i($,2),I+=m.magic,I+=i(h,2),I+=i(u,2),I+=i(E.crc32,4),I+=i(E.compressedSize,4),I+=i(E.uncompressedSize,4),I+=i(g.length,2),I+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+I+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(D,2)+I+i(k.length,2)+"\0\0\0\0"+i(x,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,L=113,E=1,$=2,x=3,D=4;function I(e,t){return e.msg=l[t],t}function A(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function z(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,B(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function R(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function W(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return E;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,z(e,!1),0===e.strm.avail_out))return E;if(e.strstart-e.block_start>=e.w_size-T&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):(e.strstart>e.block_start&&(z(e,!1),e.strm.avail_out),E)}),new V(4,4,8,4,N),new V(4,5,16,8,N),new V(4,6,32,32,N),new V(4,4,16,16,M),new V(8,16,32,32,M),new V(8,16,128,128,M),new V(8,32,128,256,M),new V(32,128,258,1024,M),new V(32,258,258,4096,M)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=L);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=L,R(n,f),0!==n.strstart&&(R(n,e.adler>>>16),R(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&B(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(B(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&A(t)<=A(a)&&t!==c)return I(e,-5);if(666===n.status&&0!==e.avail_in)return I(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return E;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?E:$}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return E;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(z(e,!1),0===e.strm.avail_out))return E}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?E:$}(n,t):i[n.level].func(n,t);if(m!==x&&m!==D||(n.status=666),m===E||m===x)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===$&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(P(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),B(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(R(n,e.adler>>>16),R(n,65535&e.adler)),B(e),0=a.w_size&&(0===o&&(P(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,B=8+(15&(y>>>=4)),0===a.wbits)a.wbits=B;else if(B>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(B=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,B)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;B=f[g+S++],a.head&&B&&a.length<65536&&(a.head.name+=String.fromCharCode(B)),B&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,U={bits:a.lenbits},z=o(0,a.lens,0,19,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=$,w-=$,a.lens[a.have++]=D;else{if(16===D){for(R=$+2;w>>=$,w-=$,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}B=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===D){for(R=$+3;w>>=$)),y>>>=3,w-=3}else{for(R=$+7;w>>=$)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=B}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,U={bits:a.lenbits},z=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,U={bits:a.distbits},z=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,U),a.distbits=U.bits,z){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;x=(W=a.lencode[y&(1<>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=$,w-=$,a.back+=$,a.length=D,0===x){a.mode=26;break}if(32&x){a.back=-1,a.mode=12;break}if(64&x){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&x,a.mode=22;case 22:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;x=(W=a.distcode[y&(1<>>16&255,D=65535&W,!(($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+($=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=$,w-=$,a.back+=$,64&x){e.msg="invalid distance code",a.mode=30;break}a.offset=D,a.extra=15&x,a.mode=24;case 24:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),E=a.window}else E=m,L=b-a.offset,S=a.length;for(kv?(y=U[R+h[C]],A[P+h[C]]):(y=96,0),f=1<>$)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(I&=f-1,I+=f):I=0,C++,0==--B[F]){if(F===S)break;F=t[a+h[C]]}if(L>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function R(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function N(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?q(e,t,a,i):4===e.strategy||o===r?(R(e,2+(i?1:0),3),K(e,T,S)):(R(e,4+(i?1:0),3),function(e,t,a,i){var n;for(R(e,t-257,5),R(e,a-1,5),R(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(E[a]+d+1)]++,e.dyn_dtree[2*z(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){R(e,2,3),W(e,b,T),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iI.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(B,{onClick:I.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(z,{"current-directory":a.currentDirectory,source:"admin",onSelect:I.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(B,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(W,{key:1,modelValue:I.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>I.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",$,[(0,c.bF)(B,{onClick:I.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(B,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>D.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),D.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(B,{text:"",onClick:t[4]||(t[4]=e=>D.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[D.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(P,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(D.treeError),1),(0,c.bF)(B,{type:"primary",size:"small",onClick:I.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(R,{key:1,ref:"treeRef",data:D.treeData,props:D.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:I.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(P,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",E,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,D.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var D=a(70797),I={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,D.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},A=a(71241);const P=(0,A.A)(I,[["render",x],["__scopeId","data-v-7aaa437c"]]);var B=P,z=a(45130);const U={class:"mobile-drawer-header"},R={class:"mobile-drawer-title"},W={class:"mobile-drawer-content"},O=["onClick"];function N(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",U,[(0,c.Lk)("span",R,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",W,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var M={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,A.A)(M,[["render",N],["__scopeId","data-v-feeadb1c"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const Q=(0,A.A)(H,[["render",G],["__scopeId","data-v-f5c66568"]]);var q=Q,Y=a(4275),J=a(11012),ee=a(89559),te=(a(85332),a(12687)),ae=(a(18785),a(69655)),ie=(a(2893),a(78507));a(213),a(44114);const ne={class:"ai-tags"},se={class:"ai-toolbar"},re={class:"ai-heading"},oe={class:"ai-heading-icon"},le={key:0,class:"ai-empty"},de={class:"ai-empty-icon"},ce={class:"ai-empty-title"},he={key:1,class:"ai-empty ai-ready"},ue={class:"ai-empty-icon"},fe={class:"ai-empty-title"},me={key:2,class:"ai-progress"},pe={class:"ai-progress-label"},ge={key:3,class:"ai-results"},be={class:"ai-result-heading"},ve={class:"ai-file"},ke={key:1,class:"ai-tag-list"},ye={key:0,class:"ai-empty-title"},we={key:4,class:"ai-footer"},_e={class:"ai-selection"},Fe={class:"ai-footer-actions"};function Ce(e,t,a,n,s,r){const o=(0,c.g2)("font-awesome-icon"),d=ie.R7,u=l.S2,f=ae.ve,m=te.u,p=ee.KR,g=J.mO,b=i.A;return(0,c.bo)(((0,c.uX)(),(0,c.CE)("section",ne,[(0,c.Lk)("div",se,[(0,c.Lk)("div",re,[(0,c.Lk)("span",oe,[(0,c.bF)(o,{icon:"robot"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("aiTags.tab")),1),(0,c.bF)(d,{content:e.$t("aiTags.hint"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),s.available?((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",loading:s.generating,disabled:a.disabled||s.saving||!a.files.length,onClick:t[0]||(t[0]=e=>r.generate(!1))},{default:(0,c.k6)(()=>[s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"tags"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.generate")),1)]),_:1},8,["loading","disabled"])):(0,c.Q3)("",!0)]),s.loadingConfig||s.available?!s.available||s.rows.length||s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("div",he,[(0,c.Lk)("span",ue,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("span",fe,(0,h.v_)(e.$t("aiTags.ready")),1)])):((0,c.uX)(),(0,c.CE)("div",le,[(0,c.Lk)("span",de,[(0,c.bF)(o,{icon:"cog"})]),(0,c.Lk)("span",ce,(0,h.v_)(s.configError||e.$t("aiTags.disabled")),1),(0,c.bF)(u,{type:"primary",plain:"",onClick:t[1]||(t[1]=t=>e.$router.push("/systemConfig#ai"))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"cog"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.settings")),1)]),_:1})])),s.generating?((0,c.uX)(),(0,c.CE)("div",me,[(0,c.Lk)("div",pe,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("aiTags.progress",{done:s.completed,total:s.workTotal})),1),(0,c.bF)(u,{size:"small",onClick:r.cancel},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("aiTags.cancel")),1)]),_:1},8,["onClick"])]),(0,c.bF)(f,{percentage:s.workTotal?Math.round(s.completed/s.workTotal*100):0,"show-text":!1,"stroke-width":6},null,8,["percentage"])])):(0,c.Q3)("",!0),s.rows.length?((0,c.uX)(),(0,c.CE)("div",ge,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.rows,t=>((0,c.uX)(),(0,c.CE)("div",{key:t.fileId,class:"ai-result"},[(0,c.Lk)("div",be,[(0,c.bF)(o,{icon:"image",class:"ai-file-icon"}),(0,c.Lk)("span",ve,(0,h.v_)(r.fileName(t.fileId)),1),t.applied?((0,c.uX)(),(0,c.Wv)(m,{key:0,size:"small",type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"check"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.saved")),1)]),_:1})):(0,c.Q3)("",!0)]),t.error?((0,c.uX)(),(0,c.Wv)(p,{key:0,title:r.errorText(t.error),type:"error","show-icon":"",closable:!1},null,8,["title"])):((0,c.uX)(),(0,c.CE)("div",ke,[t.applied?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(t.selected,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128)):((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(t.tags,e=>((0,c.uX)(),(0,c.Wv)(g,{key:e,checked:t.selected.includes(e),"aria-disabled":a.disabled||s.saving||s.generating,onChange:a=>r.toggleTag(t,e)},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["checked","aria-disabled","onChange"]))),128)),t.tags.length?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("span",ye,(0,h.v_)(e.$t("aiTags.noTags")),1))],64))])),t.saveError?((0,c.uX)(),(0,c.Wv)(p,{key:2,title:t.saveError,type:"warning","show-icon":"",closable:!1,class:"ai-save-error"},null,8,["title"])):(0,c.Q3)("",!0)]))),128))])):(0,c.Q3)("",!0),s.rows.length&&!s.generating?((0,c.uX)(),(0,c.CE)("div",we,[(0,c.Lk)("span",_e,(0,h.v_)(e.$t("aiTags.selection",{count:r.selectedCount})),1),(0,c.Lk)("div",Fe,[r.retryFiles.length?((0,c.uX)(),(0,c.Wv)(u,{key:0,disabled:a.disabled||s.saving,onClick:t[2]||(t[2]=e=>r.generate(!0))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["disabled"])):(0,c.Q3)("",!0),(0,c.bF)(u,{type:"primary",loading:s.saving,disabled:a.disabled||!r.pending.length,onClick:r.apply},{default:(0,c.k6)(()=>[s.saving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.apply")),1)]),_:1},8,["loading","disabled","onClick"])])])):(0,c.Q3)("",!0)])),[[b,s.loadingConfig]])}a(20116),a(61701),a(18237),a(13579);var Te=a(84344),Se={name:"AITagPanel",props:{files:{type:Array,required:!0},disabled:{type:Boolean,default:!1}},emits:["applied","busy"],data(){return{available:!1,configError:"",loadingConfig:!0,batchSize:3,generating:!1,saving:!1,rows:[],completed:0,workTotal:0}},computed:{fileSignature(){return JSON.stringify(this.files.map(e=>e.name))},selectedCount(){return this.pending.reduce((e,t)=>e+t.selected.length,0)},retryFiles(){return this.files.filter(e=>this.rows.some(t=>t.fileId===e.name&&t.error))},pending(){return this.rows.filter(e=>!e.error&&!e.applied&&e.selected.length)}},watch:{fileSignature(){this.cancel(),this.rows=[]}},async mounted(){try{const e=await(0,Te.Lh)("/api/manage/ai/tags");this.available=e.enabled,this.batchSize=e.maxBatchSize}catch(e){this.configError=this.errorText(e)}finally{this.loadingConfig=!1}},beforeUnmount(){this.cancel()},methods:{fileName(e){return this.files.find(t=>t.name===e)?.metadata?.FileName||e},errorText(e){return(0,Te.wt)(e,this.$t,this.$te)},toggleTag(e,t){this.disabled||this.saving||this.generating||(e.selected=e.selected.includes(t)?e.selected.filter(e=>e!==t):[...e.selected,t])},cancel(){this.controller?.abort()},async generate(e){if(this.disabled||this.generating||this.saving)return;const t=e?this.retryFiles:[...this.files],a=this.fileSignature;e||(this.rows=[]);const i=new AbortController;this.controller=i,this.generating=!0,this.completed=0,this.workTotal=t.length,this.$emit("busy",!0);try{await(0,Te.hP)(t,{signal:i.signal,batchSize:this.batchSize,onResult:e=>{if(i.signal.aborted||a!==this.fileSignature)return;const t={...e,selected:[...e.tags||[]],applied:!1,saveError:""},n=this.rows.findIndex(t=>t.fileId===e.fileId);-1===n?this.rows.push(t):this.rows.splice(n,1,t),this.completed++}})}catch(n){if(a!==this.fileSignature)return;if("AbortError"===n.name)for(const e of t)if(!this.rows.some(t=>t.fileId===e.name&&!t.error)){const t=this.rows.findIndex(t=>t.fileId===e.name),a={fileId:e.name,error:{message:"CANCELLED"},selected:[],applied:!1};-1===t?this.rows.push(a):"CANCELLED"===this.rows[t].error?.message&&this.rows.splice(t,1,a)}"AbortError"!==n.name&&this.$message.error(this.errorText(n))}finally{this.generating=!1,this.$emit("busy",!1)}},async apply(){if(!(this.disabled||this.saving||this.generating)){this.saving=!0,this.$emit("busy",!0);try{await(0,Te.EY)(this.pending.map(e=>({fileId:e.fileId,tags:e.selected,sourceIdentity:e.sourceIdentity,repairIndex:!!e.indexPending})),e=>{const t=this.rows.find(t=>t.fileId===e.fileId);t&&(t.indexPending=!!e.indexPending,t.applied=e.saved&&!e.indexPending,t.saveError=e.indexPending?this.$t("aiTags.indexPending"):e.error?this.errorText(e.error):"",e.saved&&this.$emit("applied",[e]))})}catch(e){this.$message.error(this.errorText(e))}finally{this.saving=!1,this.$emit("busy",!1)}}}}};const Le=(0,A.A)(Se,[["render",Ce],["__scopeId","data-v-954f5f34"]]);var Ee=Le;const $e={class:"batch-tag-container"},xe={class:"tab-content"},De={class:"tab-description"},Ie={class:"input-section"},Ae={key:0,class:"suggestions-panel"},Pe=["onClick"],Be={class:"tags-to-add-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Re={class:"action-buttons"},We={class:"tab-content"},Oe={class:"tab-description"},Ne={key:0,class:"common-tags-section"},Me={class:"tags-container"},Ve={key:1,class:"empty-message"},Xe={class:"tab-content"},je={class:"tab-description"},Ke={class:"action-buttons"},Ze={class:"tab-content ai-tab-content"};function Ge(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=ee.KR,m=d.WK,p=te.u,g=Y.v$,b=Ee,v=Y.q,k=r.kZ;return(0,c.uX)(),(0,c.Wv)(k,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[3]||(t[3]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",$e,[n.pendingIndexIds.length?((0,c.uX)(),(0,c.Wv)(f,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(u,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),(0,c.bF)(v,{modelValue:n.activeTab,"onUpdate:modelValue":t[2]||(t[2]=e=>n.activeTab=e),type:"border-card","before-leave":s.beforeTabChange},{default:(0,c.k6)(()=>[(0,c.bF)(g,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",xe,[(0,c.Lk)("p",De,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",Ie,[(0,c.bF)(m,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.loading||n.aiBusy,placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary",disabled:n.loading||n.aiBusy},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick","disabled"])]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Ae,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,Pe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Be,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(p,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ue,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",Re,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",We,[(0,c.Lk)("p",Oe,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ne,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",Me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(p,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",Ve,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Xe,[(0,c.Lk)("p",je,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(f,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",Ke,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"]),(0,c.bF)(g,{label:e.$t("aiTags.tab"),name:"ai",lazy:""},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ze,[s.visible?((0,c.uX)(),(0,c.Wv)(b,{key:0,files:s.selectedFilesOnly,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)])]),_:1},8,["label"])]),_:1},8,["modelValue","before-leave"])])]),_:1},8,["title","modelValue","width","before-close","onClose"])}a(81148),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var He=a(51219),Qe=a(12933),qe={name:"BatchTagDialog",components:{AITagPanel:Ee},props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,pendingIndexIds:[],aiBusy:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(600px, 90vw)"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},beforeTabChange(){return!this.aiBusy&&!this.loading},handleAIResults(e){this.updateSavedTags(e)},updateSavedTags(e){const t=new Set(this.pendingIndexIds);for(const a of e)a.saved&&(a.indexPending?t.add(a.fileId):t.delete(a.fileId));this.pendingIndexIds=[...t],this.$emit("tagsUpdated",e),this.loadCommonTags(e)},finishTagOperation(e,t){return this.updateSavedTags(e.results),e.success?He.nk.success(this.$t(t,{count:e.updated})):He.nk.warning(this.$t("batchTag.partialSave",{saved:e.results.filter(e=>e.saved&&!e.indexPending).length,total:e.results.length})),e.success},async repairIndex(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.pendingIndexIds,tags:[],action:"add",repairIndexIds:this.pendingIndexIds})});if(!e.ok)throw new Error;this.finishTagOperation(await e.json(),"batchTag.addSuccess")}catch{He.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}},resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add",this.pendingIndexIds=[]},loadCommonTags(e=[]){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags])),a=this.selectedFilesOnly.map(e=>t.get(e.name)||e.metadata?.Tags||[]);this.commonTags=a.length?a[0].filter(e=>a.every(t=>t.includes(e))):[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){if(this.loading||this.aiBusy)return;const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return He.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){if(this.loading||this.aiBusy)return;const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(!this.loading&&!this.aiBusy)if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.addSuccess")&&(this.tagsToAdd=[])}}catch(e){console.error("Error adding tags:",e),He.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else He.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const t=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();this.finishTagOperation(e,"batchTag.removeSuccess")}}catch(t){console.error("Error removing tag:",t),He.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}}},handleClearAllTags(){this.loading||this.aiBusy||Qe.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{He.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.clearSuccess")}}catch(e){console.error("Error clearing tags:",e),He.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}}},handleClose(){this.aiBusy||this.loading||(this.visible=!1)}}};const Ye=(0,A.A)(qe,[["render",Ge],["__scopeId","data-v-2bcde7ae"]]);var Je=Ye,et=a(813);a(34896);const tt={class:"tag-management-container"},at={class:"input-section"},it={key:0,class:"suggestions-panel"},nt=["onClick"],st={class:"current-tags-section"},rt={key:0,class:"tags-container"},ot={key:1,class:"empty-message"},lt={class:"popular-tags-section"},dt={key:0,class:"tags-container"},ct={key:1,class:"empty-message"},ht={key:2,class:"empty-message"},ut={class:"dialog-footer"};function ft(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=te.u,p=(0,c.g2)("Loading"),g=et.tk,b=ee.KR,v=Ee,k=r.kZ;return(0,c.uX)(),(0,c.Wv)(k,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",ut,[(0,c.bF)(u,{disabled:n.aiBusy||n.loading,onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["disabled","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",tt,[(0,c.Lk)("div",at,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.aiBusy||n.loading,placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary",disabled:n.aiBusy||n.loading},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick","disabled"])]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,nt))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",st,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",rt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:!n.aiBusy&&!n.loading,onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",ot,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",lt,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",dt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",ct,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",ht,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))]),n.indexPending?((0,c.uX)(),(0,c.Wv)(b,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(u,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),s.visible?((0,c.uX)(),(0,c.Wv)(v,{key:1,class:"single-ai-panel",files:s.aiFiles,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)])]),_:1},8,["title","modelValue","width","before-close","onClose"])}var mt=a(57477),pt={name:"TagManagementDialog",components:{Loading:mt.Loading,AITagPanel:Ee},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0},fileMetadata:{type:Object,default:()=>({})}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,indexPending:!1,aiBusy:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{aiFiles(){return this.fileId?[{name:this.fileId,metadata:this.fileMetadata}]:[]},visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(500px, 90vw)"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},handleAIResults(e){const t=e.find(e=>e.fileId===this.fileId);t&&(this.currentTags=t.tags,this.$emit("tagsUpdated",t.tags))},async repairIndex(){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const e=await(0,Te.Lh)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[],repairIndex:!0})});this.currentTags=e.tags,this.indexPending=!!e.indexPending,this.$emit("tagsUpdated",this.currentTags)}catch(e){He.nk.error((0,Te.wt)(e,this.$t,this.$te))}finally{this.loading=!1}}},async loadFileTags(){this.loading=!0;try{const e=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),He.nk.error(this.$t("tagManagement.loadFailed"))}finally{this.loading=!1}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,D.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){if(this.aiBusy||this.loading)return;const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return He.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",repairIndex:this.indexPending,tags:[e]})});if(t.ok){const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,this.inputTag="",this.showSuggestions=!1,e.indexPending||He.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}else{const e=await t.json();He.nk.error((0,Te.wt)(e.error||{code:"INTERNAL_ERROR"},this.$t,this.$te))}}catch(t){console.error("Error adding tag:",t),He.nk.error(this.$t("tagManagement.addFailed"))}finally{this.loading=!1}}},async handleRemoveTag(e){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",repairIndex:this.indexPending,tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,e.indexPending||He.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),He.nk.error(this.$t("tagManagement.removeFailed"))}finally{this.loading=!1}}},handleAddPopularTag(e){this.aiBusy||this.loading||(this.inputTag=e,this.handleAddTag())},handleClose(){this.aiBusy||this.loading||(this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.indexPending=!1,this.popularTags=[])}}};const gt=(0,A.A)(pt,[["render",ft],["__scopeId","data-v-8ac449fe"]]);var bt=gt,vt=a(55558),kt=(a(10456),a(66810)),yt=(a(4885),a(82006)),wt=(a(98642),a(63003),a(59869)),_t=(a(70415),a(73565),a(57009));a(78450);const Ft={class:"detail-actions"},Ct={class:"preview-section"},Tt={class:"preview-content"},St=["src"],Lt=["src"],Et={key:1},$t={key:1},xt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},Dt={key:1,style:{color:"var(--el-text-color-secondary)"}},It={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},At={key:1,style:{color:"var(--el-text-color-secondary)"}};function Pt(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=_t.Zq,b=wt.MF,v=te.u,k=wt.TS,y=yt.xE,w=yt.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ft,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",Ct,[(0,c.Lk)("div",Tt,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,St)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Et,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",$t,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",xt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",Dt,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",It,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",At,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,z.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const Bt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function zt(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:Bt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var Ut={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{He.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();He.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),He.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=zt(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();He.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),He.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const Rt=(0,A.A)(Ut,[["render",Pt],["__scopeId","data-v-550287cc"]]);var Wt=Rt;const Ot={key:0,class:"batch-floating-bar"},Nt={class:"batch-selection-summary"},Mt={class:"batch-selection-count"},Vt={class:"batch-floating-actions"};function Xt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ie.R7;return(0,c.uX)(),(0,c.Wv)(z.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",Ot,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Nt,[(0,c.Lk)("span",Mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",Vt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var jt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const Kt=(0,A.A)(jt,[["render",Xt],["__scopeId","data-v-49301bcc"]]);var Zt=Kt,Gt=a(54880),Ht=(a(4318),a(77815)),Qt=(a(72907),a(98469));a(38736);const qt={class:"list-col list-col-checkbox"},Yt=["src"],Jt=["src"],ea=["title"],ta={class:"filename-start"},aa={class:"filename-end"},ia={class:"list-col list-col-tags"},na={key:1,class:"list-empty"},sa={class:"list-col list-col-channel"},ra={class:"list-col list-col-channel-name"},oa={key:0,class:"channel-name-box"},la={key:1,class:"list-empty"},da={class:"list-col list-col-address"},ca={key:0,class:"address-box"},ha={key:1,class:"list-empty"},ua={class:"list-col list-col-size"},fa={class:"list-col list-col-date"},ma={class:"list-col list-col-actions"};function pa(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[10]||(t[10]=t=>e.$emit("touchstart",t)),onTouchend:t[11]||(t[11]=t=>e.$emit("touchend",t)),onTouchmove:t[12]||(t[12]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",qt,[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onClick:t[1]||(t[1]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectChange},null,8,["modelValue","onChange"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Yt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Jt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[3]||(t[3]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",ta,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",aa,(0,h.v_)(s.fileNameEnd),1)],8,ea)]),(0,c.Lk)("div",ia,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",na,"-"))]),(0,c.Lk)("div",sa,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",ra,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",oa,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",la,"-"))]),(0,c.Lk)("div",da,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",ca,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",ha,"-"))]),(0,c.Lk)("div",ua,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",fa,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",ma,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,z.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[8]||(t[8]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[9]||(t[9]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var ga={name:"FileListItem",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{handleSelectChange(e){this.localSelected=e,this.$emit("update:selected",e)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const ba=(0,A.A)(ga,[["render",pa],["__scopeId","data-v-25a3242c"]]);var va=ba,ka=a(70683);a(95385);const ya={class:"file-short-info"},wa={key:0,class:"success-tag"},_a={key:1,class:"fail-tag"},Fa={key:2,class:"success-tag"},Ca={key:3,class:"primary-tag"},Ta={key:0,style:{"margin-left":"2px"}},Sa={key:0,class:"skeleton-wrapper"},La={class:"error-text"},Ea=["src"],$a={class:"error-text"},xa={key:3,class:"file-preview"},Da={class:"card-bottom-overlay"},Ia={class:"file-name-row"},Aa={class:"file-name"},Pa={class:"action-bar"},Ba={class:"action-bar-left"},za={class:"action-bar-right"};function Ua(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=_t.Zq,d=ie.R7,u=ka.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",ya,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",wa,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",_a,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Fa,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",Ca,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",Ta," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",Sa)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",La,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,Ea),[[z.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",$a,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",xa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",Da,[(0,c.Lk)("div",Ia,[(0,c.Lk)("span",Aa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",Pa,[(0,c.Lk)("div",Ba,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",za,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var Ra={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const Wa=(0,A.A)(Ra,[["render",Ua],["__scopeId","data-v-956fb02e"]]);var Oa=Wa;const Na={class:"card-bottom-overlay"},Ma={class:"file-name-row"},Va={class:"file-name"},Xa={key:0,class:"action-bar"},ja={class:"action-bar-right"};function Ka(e,t,a,i,n,s){const r=Qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7,d=ka.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",Na,[(0,c.Lk)("div",Ma,[(0,c.Lk)("span",Va,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",Xa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",ja,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Za={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const Ga=(0,A.A)(Za,[["render",Ka],["__scopeId","data-v-534cf01b"]]);var Ha=Ga;function Qa(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var qa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ya=(0,A.A)(qa,[["render",Qa],["__scopeId","data-v-070880ec"]]);var Ja=Ya,ei=a(81095),ti=a(62086),ai=(a(40670),a(88830),a(23597),a(58165));a(34396),a(3261);const ii=["aria-checked"];function ni(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[(0,c.bF)(r,{icon:s.markIcon,class:"dashboard-checkbox-mark"},null,8,["icon"])],42,ii)}var si={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"breadcrumb",validator:e=>["breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"},markIcon(){return this.indeterminate&&!this.checked?"minus":"check"}},methods:{handleClick(e){this.$emit("click",e)}}};const ri=(0,A.A)(si,[["render",ni],["__scopeId","data-v-3757bfa7"]]);var oi=ri,li=(a(77128),a(49187),a(77788));a(72099);const di={class:"el-dropdown-link filter-trigger"},ci={class:"filter-section"},hi={class:"filter-title"},ui={class:"filter-options"},fi={class:"filter-section"},mi={class:"filter-title"},pi={class:"filter-options"},gi={class:"filter-section"},bi={class:"filter-title"},vi={class:"filter-options"},ki={class:"filter-section"},yi={class:"filter-title"},wi={class:"filter-options"},_i={class:"filter-section"},Fi={class:"filter-title"},Ci={class:"filter-options"},Ti={key:0,class:"filter-section"},Si={class:"filter-title"},Li={class:"filter-options"},Ei={key:0,class:"channel-divider"},$i={class:"channel-group-title"},xi={class:"filter-actions"};function Di(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=li.z_,d=Qt.dI,u=Qt.o5,f=l.S2,m=ti.Iy,p=ti.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ci,[(0,c.Lk)("div",hi,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",ui,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",fi,[(0,c.Lk)("div",mi,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",pi,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",gi,[(0,c.Lk)("div",bi,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",vi,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",ki,[(0,c.Lk)("div",yi,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",wi,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",_i,[(0,c.Lk)("div",Fi,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ci,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",Ti,[(0,c.Lk)("div",Si,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Li,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ei)):(0,c.Q3)("",!0),(0,c.Lk)("div",$i,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",xi,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",di,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588);var Ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const Ai=(0,A.A)(Ii,[["render",Di],["__scopeId","data-v-42919522"]]);var Pi=Ai,Bi=a(20620);const zi={class:"container"},Ui={class:"header-content admin-header-content"},Ri={class:"search-area"},Wi={class:"search-card"},Oi={class:"actions"},Ni={class:"el-dropdown-link"},Mi={class:"breadcrumb-container"},Vi=["title","aria-pressed"],Xi=["title","aria-pressed"],ji=["title"],Ki={class:"breadcrumb-sort-icon",viewBox:"0 0 30 18","aria-hidden":"true"},Zi={key:0,class:"sort-field-glyph"},Gi={key:1,class:"sort-field-glyph"},Hi={key:2,class:"sort-field-glyph"},Qi={key:3,class:"sort-field-glyph"},qi={key:4,class:"sort-order-glyph",d:"M23 13.5V4.5M19 8.5L23 4.5L27 8.5"},Yi={key:5,class:"sort-order-glyph",d:"M23 4.5V13.5M19 9.5L23 13.5L27 9.5"},Ji={class:"sort-order-wrapper"},en={class:"mobile-directory-path"},tn={class:"breadcrumb desktop-only"},an=["title"],nn={key:1,class:"empty-state"},sn={class:"empty-text"},rn={class:"empty-hint"},on={class:"list-header"},ln={class:"list-col list-col-checkbox"},dn={class:"list-col list-col-preview"},cn={class:"list-col list-col-name"},hn={class:"list-col list-col-tags"},un={class:"list-col list-col-channel"},fn={class:"list-col list-col-channel-name"},mn={class:"list-col list-col-address"},pn={class:"list-col list-col-size"},gn={class:"list-col list-col-date"},bn={class:"list-col list-col-actions"},vn={key:1,class:"empty-state list-empty"},kn={class:"empty-text"},yn={class:"empty-hint"},wn={class:"pagination-container"},_n={class:"pagination-center"},Fn={class:"pagination-right"},Cn={class:"page-total"},Tn={class:"page-jump"},Sn={class:"dialog-section"},Ln={class:"section-header"},En={class:"section-title"},$n={class:"section-content"},xn={class:"dialog-section"},Dn={class:"section-header"},In={class:"section-title"},An={class:"section-content"},Pn={class:"setting-item"},Bn={class:"setting-label"},zn={key:0,class:"setting-item"},Un={class:"setting-label"},Rn={class:"dialog-action"};function Wn(e,t,a,i,n,s){const o=Bi.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=Pi,p=ie.R7,g=Gt.bZ,b=oi,v=kt.Zh,k=kt.MQ,y=ai.fR,w=ti.c6,_=ti.Iy,F=ti.dW,C=ei.WZ,T=ei.vp,S=Ja,L=Ha,E=Oa,$=Qt.dI,x=va,D=Ht.aQ,I=l.S2,A=Gt.ZO,P=Gt.lX,U=Zt,R=Wt,W=kt.ll,O=vt.qi,N=r.kZ,M=bt,V=Je,j=q,K=X,Z=B;return(0,c.uX)(),(0,c.CE)("div",zi,[(0,c.bF)(P,null,{default:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ui,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",Ri,[(0,c.Lk)("div",Wi,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,z.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",Oi,[(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("span",Ni,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(A,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Mi,[(0,c.bF)(b,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",{class:(0,h.C4)(["breadcrumb-view-toggle",{"is-list":"list"===n.viewMode}]),role:"group"},[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,Vi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,Xi)],2),(0,c.bF)(F,{trigger:"click",class:"breadcrumb-sort-dropdown",onCommand:s.setSortField},{dropdown:(0,c.k6)(()=>[(0,c.bF)(_,{class:"sort-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ji,[(0,c.bF)(k,{modelValue:n.sortOrder,"onUpdate:modelValue":t[5]||(t[5]=e=>n.sortOrder=e),size:"small",onChange:s.setSortOrder},{default:(0,c.k6)(()=>[(0,c.bF)(v,{label:"asc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortAsc")),1)]),_:1}),(0,c.bF)(v,{label:"desc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortDesc")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,c.bF)(y,{class:"sort-divider"}),(0,c.bF)(w,{command:"time",class:(0,h.C4)({"is-selected":"time"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByTime")),1),"time"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"size",class:(0,h.C4)({"is-selected":"size"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortBySize")),1),"size"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"rawName",class:(0,h.C4)({"is-selected":"rawName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByRawName")),1),"rawName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"fileName",class:(0,h.C4)({"is-selected":"fileName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByFileName")),1),"fileName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"breadcrumb-sort-button",type:"button",title:s.sortLabel},[((0,c.uX)(),(0,c.CE)("svg",Ki,["time"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Zi,[...t[32]||(t[32]=[(0,c.Lk)("circle",{cx:"7.5",cy:"9",r:"5.5"},null,-1),(0,c.Lk)("path",{d:"M7.5 5.5V9L10 10.5"},null,-1)])])):"size"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Gi,[...t[33]||(t[33]=[(0,c.Lk)("path",{d:"M2 4H13M2 9H10M2 14H7"},null,-1)])])):"rawName"===n.sortField?((0,c.uX)(),(0,c.CE)("g",Hi,[...t[34]||(t[34]=[(0,c.Lk)("path",{d:"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5"},null,-1)])])):((0,c.uX)(),(0,c.CE)("g",Qi,[...t[35]||(t[35]=[(0,c.Lk)("path",{d:"M2.5 14L7.5 3L12.5 14M4.3 10H10.7"},null,-1)])])),"asc"===n.sortOrder?((0,c.uX)(),(0,c.CE)("path",qi)):((0,c.uX)(),(0,c.CE)("path",Yi))]))],8,ji)]),_:1},8,["onCommand"]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[6]||(t[6]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",en,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",tn,[(0,c.bF)(T,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(C,{onClick:t[7]||(t[7]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(C,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,an)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[9]||(t[9]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[10]||(t[10]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",nn,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",sn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",rn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(L,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(E,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[13]||(t[13]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[14]||(t[14]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",on,[(0,c.Lk)("div",ln,[(0,c.bF)($,{"model-value":s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[11]||(t[11]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectAllPage},null,8,["model-value","indeterminate","onChange"])]),(0,c.Lk)("div",dn,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",cn,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",hn,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",un,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",fn,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",mn,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",pn,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",gn,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",bn,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",vn,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",kn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",yn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(x,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",wn,[(0,c.Lk)("div",_n,[(0,c.bF)(D,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(I,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(I,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Fn,[(0,c.Lk)("span",Cn,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Tn,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[15]||(t[15]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,z.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(I,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[36]||(t[36]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(U,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(R,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[17]||(t[17]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[18]||(t[18]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[19]||(t[19]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[20]||(t[20]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[21]||(t[21]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(N,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Sn,[(0,c.Lk)("div",Ln,[(0,c.Lk)("span",En,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",$n,[(0,c.bF)(k,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[22]||(t[22]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(W,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(W,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[37]||(t[37]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(W,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[38]||(t[38]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(W,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[39]||(t[39]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(W,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[40]||(t[40]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(W,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",xn,[(0,c.Lk)("div",Dn,[(0,c.Lk)("span",In,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(p,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",An,[(0,c.Lk)("div",Pn,[(0,c.Lk)("span",Bn,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(O,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[23]||(t[23]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",zn,[(0,c.Lk)("span",Un,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[24]||(t[24]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",Rn,[(0,c.bF)(I,{type:"primary",onClick:t[25]||(t[25]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(M,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showTagDialog=e),fileId:n.currentTagFile,fileMetadata:s.tagFileMetadata,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","fileMetadata","onTagsUpdated"]),(0,c.bF)(V,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(j,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(K,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(Z,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[31]||(t[31]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}var On=a(60782),Nn=a(44813),Mn=a.n(Nn),Vn=a(54047),Xn=a(46638);class jn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,He.nk.warning(Xn.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,D.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||He.nk.warning(Xn.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,D.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const Kn=new jn;var Zn=a(62388),Gn=a(48903),Hn=a(90144);function Qn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function qn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function Yn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,Hn.KR)(!1),r=(0,Hn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,Hn.BA)(i);return t[e]||void 0}function v(){const e=(0,Hn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||I():u&&(P(),A())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,Hn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,Hn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=qn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),E())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function E(){const e=b();if(!e)return;const t=(0,Hn.BA)(e.containerRef);if(!t)return;const a=(0,Hn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=Qn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function $(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,Hn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=qn(o,o),S(),document.addEventListener("mousemove",x),document.addEventListener("mouseup",D)}}function x(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=qn(o,t),E();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function D(e){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function I(){u||(document.addEventListener("mousedown",$),u=!0)}function A(){u&&(document.removeEventListener("mousedown",$),u=!1)}function P(){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function B(){k()}return(0,c.wB)(()=>(0,Hn.BA)(i),()=>{P(),k()}),(0,c.sV)(()=>{v()&&I(),window.addEventListener("resize",B)}),(0,c.xo)(()=>{P(),L(),T(),A(),window.removeEventListener("resize",B)}),{isDragging:s,selectionRect:r}}const Jn=["time","size","rawName","fileName"],es=["asc","desc"];function ts(e,t,a){try{const i=localStorage.getItem(e);return t.includes(i)?i:a}catch{return a}}var as={name:"AdminDashBoard",mixins:[Gn.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortField:ts("sortField",Jn,"time"),sortOrder:ts("sortOrder",es,"desc"),isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:Bi.A,TagManagementDialog:bt,BatchTagDialog:Je,SkeletonLoader:Ja,FileCard:Oa,FolderCard:Ha,FileListItem:va,FileDetailDialog:Wt,BatchActionBar:Zt,MobileActionSheet:q,MobileDirectoryDrawer:X,DashboardCheckbox:oi,FilterDropdown:Pi,MoveFileDialog:B,LanguageSwitcher:Vn.A},setup(){const e=(0,Hn.KR)(null),t=(0,Hn.KR)(null),a=(0,Hn.KR)("card"),i=(0,Hn.KR)([]),{isDragging:n,selectionRect:s}=Yn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{tagFileMetadata(){return this.tableData.find(e=>e.name===this.currentTagFile)?.metadata||{}},...(0,On.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortLabel(){const e={time:"dashboard.sortByTime",size:"dashboard.sortBySize",rawName:"dashboard.sortByRawName",fileName:"dashboard.sortByFileName"},t=this.$t(e[this.sortField]||e.time),a=this.$t("desc"===this.sortOrder?"dashboard.sortDesc":"dashboard.sortAsc");return`${t} · ${a}`},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,D.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),Kn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,D.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),Kn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await Kn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},setSortField(e){Jn.includes(e)&&(this.sortField=e,this.currentPage=1,localStorage.setItem("sortField",e))},setSortOrder(e){es.includes(e)&&(this.sortOrder=e,this.currentPage=1,localStorage.setItem("sortOrder",e))},sortData(e){if(!Array.isArray(e))return[];const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder),i=e=>{const t=e=>{if(null===e||void 0===e||""===e)return null;const t=Number(e);return Number.isFinite(t)?t:null},a=t(e.metadata?.FileSizeBytes);if(null!==a)return a;const i=t(e.metadata?.FileSize);return null!==i?1024*i*1024:t(e.size)??0},n=e=>{switch(this.sortField){case"size":return i(e);case"rawName":return e.metadata?.RawName||e.name||"";case"fileName":return e.metadata?.FileName||e.name||"";case"time":default:return e.metadata?.TimeStamp?new Date(e.metadata.TimeStamp).getTime():0}},s=(e,t)=>{const a=n(e),i=n(t);let s=0;return s="string"===typeof a||"string"===typeof i?String(a||"").localeCompare(String(i||"")):a-i,"desc"===this.sortOrder?-s:s};return t.sort(s),a.sort(s),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,Zn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,D.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();Kn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,D.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();Kn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(Mn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await Kn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPage=1,this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPage=1,this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=Kn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await Kn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},handleTagsUpdated(e){this.handleBatchTagsUpdated([{fileId:this.currentTagFile,tags:e,saved:!0}])},handleBatchTagsUpdated(e){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags]));for(const i of this.tableData)t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});this.detailFile&&t.has(this.detailFile.name)&&(this.detailFile.metadata={...this.detailFile.metadata,Tags:t.get(this.detailFile.name)});const a=Kn.getLocalFileList();for(const i of a.files||[])t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});Kn.updateFileListCache(a)},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const is=(0,A.A)(as,[["render",Wn],["__scopeId","data-v-8a33a938"]]);var ns=is},62388:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var i=a(46638);function n(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:i.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:i.Ay.global.t("validation.pathTraversalNotAllowed")};const a=t?/\/\.(\/|$)/:/\/\.\//;if(a.test(e))return{valid:!1,error:i.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:i.Ay.global.t("validation.consecutiveSlashNotAllowed")};const n=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},84344:function(e,t,a){"use strict";a.d(t,{EY:function(){return u},Lh:function(){return d},hP:function(){return h},wt:function(){return o}});a(44114),a(18111),a(61701),a(13579),a(64979);var i=a(70797);const n=262144,s=20971520;function r(e){if(e?.aborted)throw new DOMException("Cancelled","AbortError")}function o(e,t,a){const i=e?.code||e?.message,n=`aiErrors.${i}`,s=a(n)?t(n,{status:e.details?.status||e.status}):t("aiErrors.NETWORK_ERROR"),r=["code","type","requestId"].filter(t=>e?.details?.[t]).map(a=>`${t(`aiErrors.${a}`)}: ${e.details[a]}`);return r.length?`${s} (${r.join(", ")})`:s}const l=e=>({code:e.code||e.message,message:e.message,...e.details?{details:e.details}:{}});async function d(e,t={}){const a=await(0,i.A)(e,t);let n;try{n=await a.json()}catch{const e=new Error(`HTTP ${a.status}`);throw e.code=401===a.status?"AUTH_REQUIRED":a.ok?"INVALID_RESPONSE":"HTTP_ERROR",e.details={status:a.status},e}if(!n||"object"!==typeof n||Array.isArray(n)){const e=new Error("INVALID_RESPONSE");throw e.code="INVALID_RESPONSE",e}if(!a.ok){const e=new Error(n.error?.message||n.message||`HTTP ${a.status}`);throw e.code=n.error?.code||(401===a.status?"AUTH_REQUIRED":"HTTP_ERROR"),e.details={status:a.status,...n.error?.details},e}return n}async function c(e,t){r(t);const a=e.metadata?.FileType?.toLowerCase();if(a&&!["image/jpeg","image/png","image/webp","image/avif","image/gif"].includes(a))throw new Error("UNSUPPORTED_IMAGE");if(Number(e.metadata?.FileSizeBytes)>s)throw new Error("IMAGE_TOO_LARGE");const o=e.name.split("/").map(encodeURIComponent).join("/"),l=await(0,i.A)(`/file/${o}`,{signal:t});if(!l.ok){const e=new Error(`HTTP ${l.status}`);throw e.code="IMAGE_FETCH_FAILED",e.details={status:l.status},e}if(Number(l.headers.get("Content-Length"))>s)throw await(l.body?.cancel()),new Error("IMAGE_TOO_LARGE");const d=l.body.getReader(),c=[];let h=0;try{while(1){r(t);const{value:e,done:a}=await d.read();if(a)break;if(h+=e.byteLength,h>s)throw await d.cancel(),new Error("IMAGE_TOO_LARGE");c.push(e)}}finally{d.releaseLock()}const u=new Blob(c,{type:l.headers.get("Content-Type")||a});let f,m;r(t);try{"function"===typeof createImageBitmap?f=await createImageBitmap(u):(m=URL.createObjectURL(u),f=new Image,await new Promise((e,t)=>{f.onload=e,f.onerror=()=>t(new Error("UNSUPPORTED_IMAGE")),f.src=m})),r(t);const e=f.width||f.naturalWidth,a=f.height||f.naturalHeight;if(!e||!a)throw new Error("UNSUPPORTED_IMAGE");const i=document.createElement("canvas"),s=Math.min(1,768/Math.max(e,a));i.width=Math.max(1,Math.round(e*s)),i.height=Math.max(1,Math.round(a*s));const o=i.getContext("2d");o.fillStyle="#ffffff",o.fillRect(0,0,i.width,i.height),o.drawImage(f,0,0,i.width,i.height);for(const l of[.8,.6,.4]){r(t);const e=await new Promise(e=>i.toBlob(e,"image/jpeg",l));if(e&&e.size<=n&&(e.size<=131072||.4===l))return e}throw new Error("PREVIEW_TOO_LARGE")}catch(p){if(t?.aborted||"AbortError"===p.name||"PREVIEW_TOO_LARGE"===p.message)throw p;throw new Error("UNSUPPORTED_IMAGE")}finally{f?.close?.(),m&&URL.revokeObjectURL(m)}}async function h(e,{signal:t,batchSize:a=3,onResult:i,prepare:n=c}={}){a=Math.max(1,Math.min(3,a));const s=[];for(let c=0;c({fileId:e.file.name})))),h.forEach((e,t)=>u.append(`image${t}`,e.image,"preview.jpg"));try{const e=await d("/api/manage/ai/tags",{method:"POST",body:u,signal:t});if(r(t),!Array.isArray(e.results)||e.results.length!==h.length)throw new Error("INVALID_RESPONSE");for(let t=0;t"string"!==typeof e)||!/^[a-f0-9]{64}$/.test(a.sourceIdentity)))throw new Error("INVALID_RESPONSE")}for(const t of e.results)s.push(t),i?.(t)}catch(o){if(t?.aborted||"AbortError"===o.name)throw o;for(const e of h){const t={fileId:e.file.name,error:l(o)};s.push(t),i?.(t)}}}return s}async function u(e,t){const a=[];for(let n=0;n!e||e.fileId!==s[t].fileId||"boolean"!==typeof e.saved||e.saved&&(!Array.isArray(e.tags)||e.tags.some(e=>"string"!==typeof e))))throw new Error("INVALID_RESPONSE");for(const i of e.results)a.push(i),t?.(i)}catch(i){for(const e of s){const n={fileId:e.fileId,saved:!1,error:l(i)};a.push(n),t?.(n)}}}return a}},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); -//# sourceMappingURL=787.b5df6f2f.js.map \ No newline at end of file diff --git a/frontend-dist/js/787.b5df6f2f.js.gz b/frontend-dist/js/787.b5df6f2f.js.gz deleted file mode 100644 index ec2524a..0000000 Binary files a/frontend-dist/js/787.b5df6f2f.js.gz and /dev/null differ diff --git a/frontend-dist/js/787.b5df6f2f.js.map b/frontend-dist/js/787.b5df6f2f.js.map deleted file mode 100644 index 8cbfdcc..0000000 --- a/frontend-dist/js/787.b5df6f2f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/787.b5df6f2f.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?2da6","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?df02","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?35ad","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?056e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?4f66","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?9971","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8ba4","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?7b8a","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?3a10","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?f1ae","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?cd9e","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?c47a","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?f571","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?3dd3","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?bbd3","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/aiTags.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=feeadb1c&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=feeadb1c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-feeadb1c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=f5c66568&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=f5c66568&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5c66568\"]])\n\nexport default __exports__","import \"core-js/modules/es.array.push.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"ai-tags\"\n};\nconst _hoisted_2 = {\n class: \"ai-toolbar\"\n};\nconst _hoisted_3 = {\n class: \"ai-heading\"\n};\nconst _hoisted_4 = {\n class: \"ai-heading-icon\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"ai-empty\"\n};\nconst _hoisted_6 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_7 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"ai-empty ai-ready\"\n};\nconst _hoisted_9 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_10 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"ai-progress\"\n};\nconst _hoisted_12 = {\n class: \"ai-progress-label\"\n};\nconst _hoisted_13 = {\n key: 3,\n class: \"ai-results\"\n};\nconst _hoisted_14 = {\n class: \"ai-result-heading\"\n};\nconst _hoisted_15 = {\n class: \"ai-file\"\n};\nconst _hoisted_16 = {\n key: 1,\n class: \"ai-tag-list\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"ai-empty-title\"\n};\nconst _hoisted_18 = {\n key: 4,\n class: \"ai-footer\"\n};\nconst _hoisted_19 = {\n class: \"ai-selection\"\n};\nconst _hoisted_20 = {\n class: \"ai-footer-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_check_tag = _resolveComponent(\"el-check-tag\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"section\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"span\", _hoisted_4, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('aiTags.tab')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('aiTags.hint'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), $data.available ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n loading: $data.generating,\n disabled: $props.disabled || $data.saving || !$props.files.length,\n onClick: _cache[0] || (_cache[0] = $event => $options.generate(false))\n }, {\n default: _withCtx(() => [!$data.generating ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"tags\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.generate')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])) : _createCommentVNode(\"\", true)]), !$data.loadingConfig && !$data.available ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n })]), _createElementVNode(\"span\", _hoisted_7, _toDisplayString($data.configError || _ctx.$t('aiTags.disabled')), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$router.push('/systemConfig#ai'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.settings')), 1)]),\n _: 1\n })])) : $data.available && !$data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('aiTags.ready')), 1)])) : _createCommentVNode(\"\", true), $data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('aiTags.progress', {\n done: $data.completed,\n total: $data.workTotal\n })), 1), _createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.cancel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('aiTags.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createVNode(_component_el_progress, {\n percentage: $data.workTotal ? Math.round($data.completed / $data.workTotal * 100) : 0,\n \"show-text\": false,\n \"stroke-width\": 6\n }, null, 8, [\"percentage\"])])) : _createCommentVNode(\"\", true), $data.rows.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.rows, row => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: row.fileId,\n class: \"ai-result\"\n }, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"ai-file-icon\"\n }), _createElementVNode(\"span\", _hoisted_15, _toDisplayString($options.fileName(row.fileId)), 1), row.applied ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"check\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.saved')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), row.error ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: $options.errorText(row.error),\n type: \"error\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8, [\"title\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [row.applied ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList(row.selected, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row.tags, tag => {\n return _openBlock(), _createBlock(_component_el_check_tag, {\n key: tag,\n checked: row.selected.includes(tag),\n \"aria-disabled\": $props.disabled || $data.saving || $data.generating,\n onChange: $event => $options.toggleTag(row, tag)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"checked\", \"aria-disabled\", \"onChange\"]);\n }), 128)), !row.tags.length ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('aiTags.noTags')), 1)) : _createCommentVNode(\"\", true)], 64))])), row.saveError ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 2,\n title: row.saveError,\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"ai-save-error\"\n }, null, 8, [\"title\"])) : _createCommentVNode(\"\", true)]);\n }), 128))])) : _createCommentVNode(\"\", true), $data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('aiTags.selection', {\n count: $options.selectedCount\n })), 1), _createElementVNode(\"div\", _hoisted_20, [$options.retryFiles.length ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n disabled: $props.disabled || $data.saving,\n onClick: _cache[2] || (_cache[2] = $event => $options.generate(true))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.saving,\n disabled: $props.disabled || !$options.pending.length,\n onClick: $options.apply\n }, {\n default: _withCtx(() => [!$data.saving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.apply')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])])])) : _createCommentVNode(\"\", true)])), [[_directive_loading, $data.loadingConfig]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport { apiJSON, aiErrorText, generateTagSuggestions, applyTagSuggestions } from '@/utils/aiTags';\nexport default {\n name: 'AITagPanel',\n props: {\n files: {\n type: Array,\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: ['applied', 'busy'],\n data() {\n return {\n available: false,\n configError: '',\n loadingConfig: true,\n batchSize: 3,\n generating: false,\n saving: false,\n rows: [],\n completed: 0,\n workTotal: 0\n };\n },\n computed: {\n fileSignature() {\n return JSON.stringify(this.files.map(file => file.name));\n },\n selectedCount() {\n return this.pending.reduce((count, row) => count + row.selected.length, 0);\n },\n retryFiles() {\n return this.files.filter(file => this.rows.some(row => row.fileId === file.name && row.error));\n },\n pending() {\n return this.rows.filter(row => !row.error && !row.applied && row.selected.length);\n }\n },\n watch: {\n fileSignature() {\n this.cancel();\n this.rows = [];\n }\n },\n async mounted() {\n try {\n const config = await apiJSON('/api/manage/ai/tags');\n this.available = config.enabled;\n this.batchSize = config.maxBatchSize;\n } catch (error) {\n this.configError = this.errorText(error);\n } finally {\n this.loadingConfig = false;\n }\n },\n beforeUnmount() {\n this.cancel();\n },\n methods: {\n fileName(id) {\n return this.files.find(file => file.name === id)?.metadata?.FileName || id;\n },\n errorText(error) {\n return aiErrorText(error, this.$t, this.$te);\n },\n toggleTag(row, tag) {\n if (this.disabled || this.saving || this.generating) return;\n row.selected = row.selected.includes(tag) ? row.selected.filter(item => item !== tag) : [...row.selected, tag];\n },\n cancel() {\n this.controller?.abort();\n },\n async generate(retry) {\n if (this.disabled || this.generating || this.saving) return;\n const files = retry ? this.retryFiles : [...this.files];\n const signature = this.fileSignature;\n if (!retry) this.rows = [];\n const controller = new AbortController();\n this.controller = controller;\n this.generating = true;\n this.completed = 0;\n this.workTotal = files.length;\n this.$emit('busy', true);\n try {\n await generateTagSuggestions(files, {\n signal: controller.signal,\n batchSize: this.batchSize,\n onResult: result => {\n if (controller.signal.aborted || signature !== this.fileSignature) return;\n const row = {\n ...result,\n selected: [...(result.tags || [])],\n applied: false,\n saveError: ''\n };\n const index = this.rows.findIndex(item => item.fileId === result.fileId);\n if (index === -1) this.rows.push(row);else this.rows.splice(index, 1, row);\n this.completed++;\n }\n });\n } catch (error) {\n if (signature !== this.fileSignature) return;\n if (error.name === 'AbortError') {\n for (const file of files) {\n if (!this.rows.some(row => row.fileId === file.name && !row.error)) {\n const index = this.rows.findIndex(row => row.fileId === file.name);\n const row = {\n fileId: file.name,\n error: {\n message: 'CANCELLED'\n },\n selected: [],\n applied: false\n };\n if (index === -1) this.rows.push(row);else if (this.rows[index].error?.message === 'CANCELLED') this.rows.splice(index, 1, row);\n }\n }\n }\n if (error.name !== 'AbortError') this.$message.error(this.errorText(error));\n } finally {\n this.generating = false;\n this.$emit('busy', false);\n }\n },\n async apply() {\n if (this.disabled || this.saving || this.generating) return;\n this.saving = true;\n this.$emit('busy', true);\n try {\n await applyTagSuggestions(this.pending.map(row => ({\n fileId: row.fileId,\n tags: row.selected,\n sourceIdentity: row.sourceIdentity,\n repairIndex: !!row.indexPending\n })), result => {\n const row = this.rows.find(item => item.fileId === result.fileId);\n if (!row) return;\n row.indexPending = !!result.indexPending;\n row.applied = result.saved && !result.indexPending;\n row.saveError = result.indexPending ? this.$t('aiTags.indexPending') : result.error ? this.errorText(result.error) : '';\n if (result.saved) this.$emit('applied', [result]);\n });\n } catch (error) {\n this.$message.error(this.errorText(error));\n } finally {\n this.saving = false;\n this.$emit('busy', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AITagPanel.vue?vue&type=template&id=954f5f34&scoped=true\"\nimport script from \"./AITagPanel.vue?vue&type=script&lang=js\"\nexport * from \"./AITagPanel.vue?vue&type=script&lang=js\"\n\nimport \"./AITagPanel.vue?vue&type=style&index=0&id=954f5f34&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-954f5f34\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nconst _hoisted_19 = {\n class: \"tab-content ai-tab-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [$data.pendingIndexIds.length ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.activeTab = $event),\n type: \"border-card\",\n \"before-leave\": $options.beforeTabChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.loading || $data.aiBusy,\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\",\n disabled: $data.loading || $data.aiBusy\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('aiTags.tab'),\n name: \"ai\",\n lazy: \"\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_19, [$options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 0,\n files: $options.selectedFilesOnly,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\", \"before-leave\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nexport default {\n name: 'BatchTagDialog',\n components: {\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n pendingIndexIds: [],\n aiBusy: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(600px, 90vw)';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n beforeTabChange() {\n return !this.aiBusy && !this.loading;\n },\n handleAIResults(results) {\n this.updateSavedTags(results);\n },\n updateSavedTags(results) {\n const pending = new Set(this.pendingIndexIds);\n for (const result of results) {\n if (result.saved) {\n if (result.indexPending) pending.add(result.fileId);else pending.delete(result.fileId);\n }\n }\n this.pendingIndexIds = [...pending];\n this.$emit('tagsUpdated', results);\n this.loadCommonTags(results);\n },\n finishTagOperation(data, successKey) {\n this.updateSavedTags(data.results);\n if (data.success) ElMessage.success(this.$t(successKey, {\n count: data.updated\n }));else ElMessage.warning(this.$t('batchTag.partialSave', {\n saved: data.results.filter(result => result.saved && !result.indexPending).length,\n total: data.results.length\n }));\n return data.success;\n },\n async repairIndex() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.pendingIndexIds,\n tags: [],\n action: 'add',\n repairIndexIds: this.pendingIndexIds\n })\n });\n if (!response.ok) throw new Error();\n this.finishTagOperation(await response.json(), 'batchTag.addSuccess');\n } catch {\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n this.pendingIndexIds = [];\n },\n loadCommonTags(results = []) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n const allTags = this.selectedFilesOnly.map(file => updates.get(file.name) || file.metadata?.Tags || []);\n this.commonTags = allTags.length ? allTags[0].filter(tag => allTags.every(tags => tags.includes(tag))) : [];\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n if (this.loading || this.aiBusy) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n if (this.loading || this.aiBusy) return;\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.loading || this.aiBusy) return;\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (this.finishTagOperation(data, 'batchTag.addSuccess')) this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.removeSuccess');\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n if (this.loading || this.aiBusy) return;\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.clearSuccess');\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=2bcde7ae&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"./BatchTagDialog.vue?vue&type=style&index=0&id=2bcde7ae&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2bcde7ae\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n disabled: $data.aiBusy || $data.loading,\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.aiBusy || $data.loading,\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\",\n disabled: $data.aiBusy || $data.loading\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.aiBusy && !$data.loading,\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))]), $data.indexPending ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), $options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 1,\n class: \"single-ai-panel\",\n files: $options.aiFiles,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nimport { apiJSON, aiErrorText } from '@/utils/aiTags';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading,\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n },\n fileMetadata: {\n type: Object,\n default: () => ({})\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n indexPending: false,\n aiBusy: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n aiFiles() {\n return this.fileId ? [{\n name: this.fileId,\n metadata: this.fileMetadata\n }] : [];\n },\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(500px, 90vw)';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n handleAIResults(results) {\n const result = results.find(item => item.fileId === this.fileId);\n if (result) {\n this.currentTags = result.tags;\n this.$emit('tagsUpdated', result.tags);\n }\n },\n async repairIndex() {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const data = await apiJSON(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [],\n repairIndex: true\n })\n });\n this.currentTags = data.tags;\n this.indexPending = !!data.indexPending;\n this.$emit('tagsUpdated', this.currentTags);\n } catch (error) {\n ElMessage.error(aiErrorText(error, this.$t, this.$te));\n } finally {\n this.loading = false;\n }\n },\n async loadFileTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n } finally {\n this.loading = false;\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n if (this.aiBusy || this.loading) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n this.inputTag = '';\n this.showSuggestions = false;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n ElMessage.error(aiErrorText(error.error || {\n code: 'INTERNAL_ERROR'\n }, this.$t, this.$te));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(this.$t('tagManagement.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleAddPopularTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.indexPending = false;\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=8ac449fe&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"./TagManagementDialog.vue?vue&type=style&index=0&id=8ac449fe&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8ac449fe\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=550287cc&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=550287cc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-550287cc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=49301bcc&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=49301bcc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49301bcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[12] || (_cache[12] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectChange\n }, null, 8, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[8] || (_cache[8] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FileListItem',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n handleSelectChange(value) {\n this.localSelected = value;\n this.$emit('update:selected', value);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=25a3242c&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=25a3242c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25a3242c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=956fb02e&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=956fb02e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-956fb02e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=534cf01b&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=534cf01b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-534cf01b\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.markIcon,\n class: \"dashboard-checkbox-mark\"\n }, null, 8, [\"icon\"])], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'breadcrumb',\n validator: value => ['breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n },\n markIcon() {\n return this.indeterminate && !this.checked ? 'minus' : 'check';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=3757bfa7&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=3757bfa7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3757bfa7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=42919522&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=42919522&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-42919522\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createBlock as _createBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_8 = [\"title\", \"aria-pressed\"];\nconst _hoisted_9 = [\"title\", \"aria-pressed\"];\nconst _hoisted_10 = [\"title\"];\nconst _hoisted_11 = {\n class: \"breadcrumb-sort-icon\",\n viewBox: \"0 0 30 18\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_14 = {\n key: 2,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_15 = {\n key: 3,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_16 = {\n key: 4,\n class: \"sort-order-glyph\",\n d: \"M23 13.5V4.5M19 8.5L23 4.5L27 8.5\"\n};\nconst _hoisted_17 = {\n key: 5,\n class: \"sort-order-glyph\",\n d: \"M23 4.5V13.5M19 9.5L23 13.5L27 9.5\"\n};\nconst _hoisted_18 = {\n class: \"sort-order-wrapper\"\n};\nconst _hoisted_19 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_20 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_23 = {\n class: \"empty-text\"\n};\nconst _hoisted_24 = {\n class: \"empty-hint\"\n};\nconst _hoisted_25 = {\n class: \"list-header\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_29 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_30 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_31 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_32 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_33 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_34 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_35 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_36 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_37 = {\n class: \"empty-text\"\n};\nconst _hoisted_38 = {\n class: \"empty-hint\"\n};\nconst _hoisted_39 = {\n class: \"pagination-container\"\n};\nconst _hoisted_40 = {\n class: \"pagination-center\"\n};\nconst _hoisted_41 = {\n class: \"pagination-right\"\n};\nconst _hoisted_42 = {\n class: \"page-total\"\n};\nconst _hoisted_43 = {\n class: \"page-jump\"\n};\nconst _hoisted_44 = {\n class: \"dialog-section\"\n};\nconst _hoisted_45 = {\n class: \"section-header\"\n};\nconst _hoisted_46 = {\n class: \"section-title\"\n};\nconst _hoisted_47 = {\n class: \"section-content\"\n};\nconst _hoisted_48 = {\n class: \"dialog-section\"\n};\nconst _hoisted_49 = {\n class: \"section-header\"\n};\nconst _hoisted_50 = {\n class: \"section-title\"\n};\nconst _hoisted_51 = {\n class: \"section-content\"\n};\nconst _hoisted_52 = {\n class: \"setting-item\"\n};\nconst _hoisted_53 = {\n class: \"setting-label\"\n};\nconst _hoisted_54 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_55 = {\n class: \"setting-label\"\n};\nconst _hoisted_56 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_divider = _resolveComponent(\"el-divider\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"breadcrumb-view-toggle\", {\n 'is-list': $data.viewMode === 'list'\n }]),\n role: \"group\"\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_9)], 2), _createVNode(_component_el_dropdown, {\n trigger: \"click\",\n class: \"breadcrumb-sort-dropdown\",\n onCommand: $options.setSortField\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"sort-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n modelValue: $data.sortOrder,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.sortOrder = $event),\n size: \"small\",\n onChange: $options.setSortOrder\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"asc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortAsc')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"desc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortDesc')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_divider, {\n class: \"sort-divider\"\n }), _createVNode(_component_el_dropdown_item, {\n command: \"time\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'time'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByTime')), 1), $data.sortField === 'time' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"size\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'size'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortBySize')), 1), $data.sortField === 'size' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"rawName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'rawName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByRawName')), 1), $data.sortField === 'rawName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"fileName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'fileName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByFileName')), 1), $data.sortField === 'fileName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"breadcrumb-sort-button\",\n type: \"button\",\n title: $options.sortLabel\n }, [(_openBlock(), _createElementBlock(\"svg\", _hoisted_11, [$data.sortField === 'time' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_12, [...(_cache[32] || (_cache[32] = [_createElementVNode(\"circle\", {\n cx: \"7.5\",\n cy: \"9\",\n r: \"5.5\"\n }, null, -1), _createElementVNode(\"path\", {\n d: \"M7.5 5.5V9L10 10.5\"\n }, null, -1)]))])) : $data.sortField === 'size' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_13, [...(_cache[33] || (_cache[33] = [_createElementVNode(\"path\", {\n d: \"M2 4H13M2 9H10M2 14H7\"\n }, null, -1)]))])) : $data.sortField === 'rawName' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_14, [...(_cache[34] || (_cache[34] = [_createElementVNode(\"path\", {\n d: \"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5\"\n }, null, -1)]))])) : (_openBlock(), _createElementBlock(\"g\", _hoisted_15, [...(_cache[35] || (_cache[35] = [_createElementVNode(\"path\", {\n d: \"M2.5 14L7.5 3L12.5 14M4.3 10H10.7\"\n }, null, -1)]))])), $data.sortOrder === 'asc' ? (_openBlock(), _createElementBlock(\"path\", _hoisted_16)) : (_openBlock(), _createElementBlock(\"path\", _hoisted_17))]))], 8, _hoisted_10)]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[7] || (_cache[7] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_21)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[9] || (_cache[9] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[10] || (_cache[10] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_23, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_24, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[13] || (_cache[13] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[14] || (_cache[14] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_checkbox, {\n \"model-value\": $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[11] || (_cache[11] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectAllPage\n }, null, 8, [\"model-value\", \"indeterminate\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_33, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_34, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_37, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_38, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"span\", _hoisted_42, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_43, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[36] || (_cache[36] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[17] || (_cache[17] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[18] || (_cache[18] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[19] || (_cache[19] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[20] || (_cache[20] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[21] || (_cache[21] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_47, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[37] || (_cache[37] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[38] || (_cache[38] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[39] || (_cache[39] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[40] || (_cache[40] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_48, [_createElementVNode(\"div\", _hoisted_49, [_createElementVNode(\"span\", _hoisted_50, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_51, [_createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"span\", _hoisted_53, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_54, [_createElementVNode(\"span\", _hoisted_55, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_56, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[25] || (_cache[25] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n fileMetadata: $options.tagFileMetadata,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"fileMetadata\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nconst SORT_FIELDS = ['time', 'size', 'rawName', 'fileName'];\nconst SORT_ORDERS = ['asc', 'desc'];\nfunction getStoredSortValue(key, validValues, fallback) {\n try {\n const value = localStorage.getItem(key);\n return validValues.includes(value) ? value : fallback;\n } catch {\n return fallback;\n }\n}\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortField: getStoredSortValue('sortField', SORT_FIELDS, 'time'),\n sortOrder: getStoredSortValue('sortOrder', SORT_ORDERS, 'desc'),\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n tagFileMetadata() {\n return this.tableData.find(file => file.name === this.currentTagFile)?.metadata || {};\n },\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortLabel() {\n const labelKeys = {\n time: 'dashboard.sortByTime',\n size: 'dashboard.sortBySize',\n rawName: 'dashboard.sortByRawName',\n fileName: 'dashboard.sortByFileName'\n };\n const fieldLabel = this.$t(labelKeys[this.sortField] || labelKeys.time);\n const orderLabel = this.$t(this.sortOrder === 'desc' ? 'dashboard.sortDesc' : 'dashboard.sortAsc');\n return `${fieldLabel} · ${orderLabel}`;\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n setSortField(field) {\n if (!SORT_FIELDS.includes(field)) return;\n this.sortField = field;\n this.currentPage = 1;\n localStorage.setItem('sortField', field);\n },\n setSortOrder(order) {\n if (!SORT_ORDERS.includes(order)) return;\n this.sortOrder = order;\n this.currentPage = 1;\n localStorage.setItem('sortOrder', order);\n },\n sortData(data) {\n if (!Array.isArray(data)) return [];\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n const getSizeInBytes = item => {\n const parseSize = value => {\n if (value === null || value === undefined || value === '') return null;\n const parsedValue = Number(value);\n return Number.isFinite(parsedValue) ? parsedValue : null;\n };\n const sizeInBytes = parseSize(item.metadata?.FileSizeBytes);\n if (sizeInBytes !== null) return sizeInBytes;\n const sizeInMegabytes = parseSize(item.metadata?.FileSize);\n if (sizeInMegabytes !== null) return sizeInMegabytes * 1024 * 1024;\n return parseSize(item.size) ?? 0;\n };\n const getValue = item => {\n switch (this.sortField) {\n case 'size':\n return getSizeInBytes(item);\n case 'rawName':\n return item.metadata?.RawName || item.name || '';\n case 'fileName':\n return item.metadata?.FileName || item.name || '';\n case 'time':\n default:\n return item.metadata?.TimeStamp ? new Date(item.metadata.TimeStamp).getTime() : 0;\n }\n };\n const compare = (a, b) => {\n const valA = getValue(a);\n const valB = getValue(b);\n let result = 0;\n if (typeof valA === 'string' || typeof valB === 'string') {\n result = String(valA || '').localeCompare(String(valB || ''));\n } else {\n result = valA - valB;\n }\n return this.sortOrder === 'desc' ? -result : result;\n };\n folders.sort(compare);\n files.sort(compare);\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n this.currentPage = 1;\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n this.currentPage = 1;\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n handleTagsUpdated(tags) {\n this.handleBatchTagsUpdated([{\n fileId: this.currentTagFile,\n tags,\n saved: true\n }]);\n },\n handleBatchTagsUpdated(results) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n for (const file of this.tableData) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n if (this.detailFile && updates.has(this.detailFile.name)) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n Tags: updates.get(this.detailFile.name)\n };\n }\n const cached = fileManager.getLocalFileList();\n for (const file of cached.files || []) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n fileManager.updateFileListCache(cached);\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=8a33a938&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"@/styles/admin-common.css?vue&type=style&index=1&id=8a33a938&scoped=true&lang=css&external\"\nimport \"./AdminDashBoard.vue?vue&type=style&index=2&id=8a33a938&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8a33a938\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import fetchWithAuth from '@/utils/fetchWithAuth';\n\nexport const MAX_PREVIEW_BYTES = 256 * 1024;\nconst MAX_ORIGINAL_BYTES = 20 * 1024 * 1024;\nfunction checkAbort(signal) {\n if (signal?.aborted) throw new DOMException('Cancelled', 'AbortError');\n}\n\nexport function aiErrorText(error, translate, hasTranslation) {\n const code = error?.code || error?.message;\n const key = `aiErrors.${code}`;\n const message = hasTranslation(key)\n ? translate(key, { status: error.details?.status || error.status })\n : translate('aiErrors.NETWORK_ERROR');\n const details = ['code', 'type', 'requestId'].filter(field => error?.details?.[field])\n .map(field => `${translate(`aiErrors.${field}`)}: ${error.details[field]}`);\n return details.length ? `${message} (${details.join(', ')})` : message;\n}\n\nconst errorResult = error => ({ code: error.code || error.message, message: error.message, ...(error.details ? { details: error.details } : {}) });\n\nexport async function apiJSON(url, options = {}) {\n const response = await fetchWithAuth(url, options);\n let data;\n try { data = await response.json(); }\n catch {\n const error = new Error(`HTTP ${response.status}`);\n error.code = response.status === 401 ? 'AUTH_REQUIRED' : response.ok ? 'INVALID_RESPONSE' : 'HTTP_ERROR';\n error.details = { status: response.status };\n throw error;\n }\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n const error = new Error('INVALID_RESPONSE');\n error.code = 'INVALID_RESPONSE';\n throw error;\n }\n if (!response.ok) {\n const error = new Error(data.error?.message || data.message || `HTTP ${response.status}`);\n error.code = data.error?.code || (response.status === 401 ? 'AUTH_REQUIRED' : 'HTTP_ERROR');\n error.details = { status: response.status, ...data.error?.details };\n throw error;\n }\n return data;\n}\n\nexport async function makeImagePreview(file, signal) {\n checkAbort(signal);\n const type = file.metadata?.FileType?.toLowerCase();\n if (type && !['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif'].includes(type)) throw new Error('UNSUPPORTED_IMAGE');\n if (Number(file.metadata?.FileSizeBytes) > MAX_ORIGINAL_BYTES) throw new Error('IMAGE_TOO_LARGE');\n const path = file.name.split('/').map(encodeURIComponent).join('/');\n const response = await fetchWithAuth(`/file/${path}`, { signal });\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}`);\n error.code = 'IMAGE_FETCH_FAILED';\n error.details = { status: response.status };\n throw error;\n }\n if (Number(response.headers.get('Content-Length')) > MAX_ORIGINAL_BYTES) {\n await response.body?.cancel();\n throw new Error('IMAGE_TOO_LARGE');\n }\n const reader = response.body.getReader();\n const chunks = [];\n let size = 0;\n try {\n while (true) {\n checkAbort(signal);\n const { value, done } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > MAX_ORIGINAL_BYTES) { await reader.cancel(); throw new Error('IMAGE_TOO_LARGE'); }\n chunks.push(value);\n }\n } finally { reader.releaseLock(); }\n const blob = new Blob(chunks, { type: response.headers.get('Content-Type') || type });\n checkAbort(signal);\n let image, objectUrl;\n try {\n if (typeof createImageBitmap === 'function') image = await createImageBitmap(blob);\n else {\n objectUrl = URL.createObjectURL(blob);\n image = new Image();\n await new Promise((resolve, reject) => {\n image.onload = resolve;\n image.onerror = () => reject(new Error('UNSUPPORTED_IMAGE'));\n image.src = objectUrl;\n });\n }\n checkAbort(signal);\n const width = image.width || image.naturalWidth;\n const height = image.height || image.naturalHeight;\n if (!width || !height) throw new Error('UNSUPPORTED_IMAGE');\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 768 / Math.max(width, height));\n canvas.width = Math.max(1, Math.round(width * scale));\n canvas.height = Math.max(1, Math.round(height * scale));\n const context = canvas.getContext('2d');\n context.fillStyle = '#ffffff';\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n for (const quality of [0.8, 0.6, 0.4]) {\n checkAbort(signal);\n const preview = await new Promise(resolve => canvas.toBlob(resolve, 'image/jpeg', quality));\n if (preview && preview.size <= MAX_PREVIEW_BYTES && (preview.size <= 128 * 1024 || quality === 0.4)) return preview;\n }\n throw new Error('PREVIEW_TOO_LARGE');\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError' || error.message === 'PREVIEW_TOO_LARGE') throw error;\n throw new Error('UNSUPPORTED_IMAGE');\n } finally {\n image?.close?.();\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function generateTagSuggestions(files, { signal, batchSize = 3, onResult, prepare = makeImagePreview } = {}) {\n batchSize = Math.max(1, Math.min(3, batchSize));\n const results = [];\n for (let start = 0; start < files.length; start += batchSize) {\n checkAbort(signal);\n const prepared = [];\n // Limit browser memory: only retain previews for the current small batch.\n for (const file of files.slice(start, start + batchSize)) {\n try { prepared.push({ file, image: await prepare(file, signal) }); }\n catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n const result = { fileId: file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n checkAbort(signal);\n if (!prepared.length) continue;\n const form = new FormData();\n form.append('items', JSON.stringify(prepared.map(item => ({ fileId: item.file.name }))));\n prepared.forEach((item, index) => form.append(`image${index}`, item.image, 'preview.jpg'));\n try {\n const data = await apiJSON('/api/manage/ai/tags', { method: 'POST', body: form, signal });\n checkAbort(signal);\n if (!Array.isArray(data.results) || data.results.length !== prepared.length) throw new Error('INVALID_RESPONSE');\n for (let index = 0; index < prepared.length; index++) {\n const result = data.results[index];\n if (!result || result.fileId !== prepared[index].file.name || (!result.error && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string') || !/^[a-f0-9]{64}$/.test(result.sourceIdentity)))) throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n for (const item of prepared) {\n const result = { fileId: item.file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n\nexport async function applyTagSuggestions(items, onResult) {\n const results = [];\n for (let start = 0; start < items.length; start += 50) {\n const batch = items.slice(start, start + 50);\n try {\n const data = await apiJSON('/api/manage/tags/apply', {\n method: 'POST', headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ items: batch })\n });\n if (!Array.isArray(data.results) || data.results.length !== batch.length || data.results.some((result, index) => !result || result.fileId !== batch[index].fileId || typeof result.saved !== 'boolean' || (result.saved && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string'))))) {\n throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n for (const item of batch) {\n const result = { fileId: item.fileId, saved: false, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","close","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_hoisted_19","_hoisted_20","_component_el_tooltip","_component_el_progress","_component_el_tag","_component_el_alert","_component_el_check_tag","content","available","generating","disabled","saving","loadingConfig","rows","configError","plain","$router","completed","workTotal","cancel","percentage","round","row","fileId","applied","effect","errorText","closable","selected","tag","tags","checked","onChange","toggleTag","saveError","count","selectedCount","retryFiles","required","batchSize","fileSignature","JSON","stringify","map","reduce","some","config","enabled","maxBatchSize","find","metadata","FileName","$te","item","controller","abort","retry","signature","AbortController","signal","onResult","aborted","findIndex","splice","message","$message","sourceIdentity","repairIndex","indexPending","saved","_component_el_tab_pane","_component_AITagPanel","_component_el_tabs","dialogWidth","beforeClose","pendingIndexIds","aiBusy","activeTab","beforeTabChange","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","selectSuggestion","tagsToAdd","removeFromToAdd","executeAddTags","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","lazy","selectedFilesOnly","onBusy","onApplied","handleAIResults","AITagPanel","selectedFiles","debounceTimer","fileIds","loadCommonTags","resetData","newTab","clearTimeout","results","updateSavedTags","Set","add","delete","finishTagOperation","successKey","success","updated","warning","headers","body","repairIndexIds","updates","Map","allTags","Tags","every","trim","fetchSuggestions","prefix","encodeURIComponent","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","aiFiles","Loading","fileMetadata","loadFileTags","loadPopularTags","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","border","column","descColumn","editForm","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","open","oldFileId","disableTooltip","handleClear","actions","command","className","Number","_component_el_checkbox","onTouchstart","onTouchend","onTouchmove","localSelected","handleSelectChange","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","tagIndex","background","getTagColor","channelTag","uploadDate","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_card","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","variant","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","markIcon","event","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","arr","groups","handler","newFilters","isArray","deep","viewBox","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_component_DashboardTabs","_component_FilterDropdown","_component_el_header","_component_DashboardCheckbox","_component_el_radio_button","_component_el_radio_group","_component_el_divider","_component_el_dropdown_item","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","onCommand","setSortField","sortOrder","setSortOrder","sortField","sortLabel","cx","cy","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","tagFileMetadata","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","SORT_FIELDS","SORT_ORDERS","getStoredSortValue","validValues","fallback","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","DashboardCheckbox","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","labelKeys","rawName","fieldLabel","orderLabel","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","userConfig","urlPrefix","location","origin","newData","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","sort","localeCompare","link","href","download","click","tab","$confirm","updateStats","handleBatchDelete","promises","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","field","order","getSizeInBytes","parseSize","parsedValue","isFinite","sizeInBytes","sizeInMegabytes","getValue","RawName","getTime","compare","valA","valB","videoElement","fetch","credentials","authType","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","folderItems","fileItems","totalCount","adminLoggedIn","has","cached","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","validateFolderPath","strict","dotPattern","invalidChars","MAX_PREVIEW_BYTES","MAX_ORIGINAL_BYTES","checkAbort","DOMException","aiErrorText","translate","hasTranslation","details","errorResult","apiJSON","makeImagePreview","getReader","read","releaseLock","image","objectUrl","createImageBitmap","Image","naturalWidth","naturalHeight","canvas","scale","context","getContext","fillStyle","fillRect","drawImage","quality","preview","toBlob","revokeObjectURL","generateTagSuggestions","prepare","prepared","form","FormData","applyTagSuggestions","batch"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/787.b5df6f2f.js.map.gz b/frontend-dist/js/787.b5df6f2f.js.map.gz deleted file mode 100644 index 2dc3348..0000000 Binary files a/frontend-dist/js/787.b5df6f2f.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/168.16edcf49.js b/frontend-dist/js/787.d0dbc2dd.js similarity index 97% rename from frontend-dist/js/168.16edcf49.js rename to frontend-dist/js/787.d0dbc2dd.js index d8bfa71..8c787c1 100644 --- a/frontend-dist/js/168.16edcf49.js +++ b/frontend-dist/js/787.d0dbc2dd.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[168],{75875:function(a,e,s){s.r(e),s.d(e,{default:function(){return F}});var o=s(80047),i=(s(85331),s(99648),s(56768));const n={class:"not-found-container"},r=["innerHTML"],c={class:"not-found-content"},t={class:"back-button-wrapper"},l={class:"error-animation"},d={class:"error-image"},k=["src"],u={class:"error-info"},h={class:"error-actions"},g={class:"help-links"},p={class:"quick-links"};function v(a,e,s,v,f,b){const m=(0,i.g2)("font-awesome-icon"),L=o.S2;return(0,i.uX)(),(0,i.CE)("div",n,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:a.backgroundImagesTemplate},null,8,r),(0,i.Lk)("div",c,[(0,i.Lk)("div",t,[(0,i.bF)(L,{class:"back-button",onClick:b.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",l,[e[3]||(e[3]=(0,i.Lk)("div",{class:"error-number"},[(0,i.Lk)("span",{class:"four"},"4"),(0,i.Lk)("span",{class:"zero"},"0"),(0,i.Lk)("span",{class:"four"},"4")],-1)),(0,i.Lk)("div",d,[(0,i.Lk)("img",{src:b.errorImage,alt:"404",class:"floating-image"},null,8,k)])]),(0,i.Lk)("div",u,[e[10]||(e[10]=(0,i.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),e[11]||(e[11]=(0,i.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,i.Lk)("div",h,[(0,i.bF)(L,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:b.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home",class:"btn-icon"}),e[4]||(e[4]=(0,i.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,i.bF)(L,{size:"large",class:"action-btn secondary-btn",onClick:b.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"arrow-left",class:"btn-icon"}),e[5]||(e[5]=(0,i.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,i.Lk)("div",g,[e[9]||(e[9]=(0,i.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,i.Lk)("div",p,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...a)=>b.goHome&&b.goHome(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"cloud-upload-alt"}),e[6]||(e[6]=(0,i.eW)(" 图片上传 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[1]||(e[1]=(...a)=>b.goDashboard&&b.goDashboard(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"tachometer-alt"}),e[7]||(e[7]=(0,i.eW)(" 管理面板 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[2]||(e[2]=(...a)=>b.refreshPage&&b.refreshPage(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"redo"}),e[8]||(e[8]=(0,i.eW)(" 刷新页面 ",-1))])])])])]),e[12]||(e[12]=(0,i.Fv)('
',1))])}s(44114);var f=s(60782),b=s(48903),m={name:"NotFound",mixins:[b.A],computed:{...(0,f.L8)(["useDarkMode","userConfig"]),errorImage(){return s(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},L=s(71241);const C=(0,L.A)(m,[["render",v],["__scopeId","data-v-827d2e7c"]]);var F=C},96682:function(a,e,s){a.exports=s.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=168.16edcf49.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[787],{75875:function(a,e,s){s.r(e),s.d(e,{default:function(){return F}});var o=s(80047),i=(s(85331),s(99648),s(56768));const n={class:"not-found-container"},r=["innerHTML"],c={class:"not-found-content"},t={class:"back-button-wrapper"},l={class:"error-animation"},d={class:"error-image"},k=["src"],u={class:"error-info"},h={class:"error-actions"},g={class:"help-links"},p={class:"quick-links"};function v(a,e,s,v,f,b){const m=(0,i.g2)("font-awesome-icon"),L=o.S2;return(0,i.uX)(),(0,i.CE)("div",n,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:a.backgroundImagesTemplate},null,8,r),(0,i.Lk)("div",c,[(0,i.Lk)("div",t,[(0,i.bF)(L,{class:"back-button",onClick:b.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",l,[e[3]||(e[3]=(0,i.Lk)("div",{class:"error-number"},[(0,i.Lk)("span",{class:"four"},"4"),(0,i.Lk)("span",{class:"zero"},"0"),(0,i.Lk)("span",{class:"four"},"4")],-1)),(0,i.Lk)("div",d,[(0,i.Lk)("img",{src:b.errorImage,alt:"404",class:"floating-image"},null,8,k)])]),(0,i.Lk)("div",u,[e[10]||(e[10]=(0,i.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),e[11]||(e[11]=(0,i.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,i.Lk)("div",h,[(0,i.bF)(L,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:b.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"home",class:"btn-icon"}),e[4]||(e[4]=(0,i.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,i.bF)(L,{size:"large",class:"action-btn secondary-btn",onClick:b.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(m,{icon:"arrow-left",class:"btn-icon"}),e[5]||(e[5]=(0,i.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,i.Lk)("div",g,[e[9]||(e[9]=(0,i.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,i.Lk)("div",p,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[0]||(e[0]=(...a)=>b.goHome&&b.goHome(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"cloud-upload-alt"}),e[6]||(e[6]=(0,i.eW)(" 图片上传 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[1]||(e[1]=(...a)=>b.goDashboard&&b.goDashboard(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"tachometer-alt"}),e[7]||(e[7]=(0,i.eW)(" 管理面板 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:e[2]||(e[2]=(...a)=>b.refreshPage&&b.refreshPage(...a)),class:"quick-link"},[(0,i.bF)(m,{icon:"redo"}),e[8]||(e[8]=(0,i.eW)(" 刷新页面 ",-1))])])])])]),e[12]||(e[12]=(0,i.Fv)('
',1))])}s(44114);var f=s(60782),b=s(48903),m={name:"NotFound",mixins:[b.A],computed:{...(0,f.L8)(["useDarkMode","userConfig"]),errorImage(){return s(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},L=s(71241);const C=(0,L.A)(m,[["render",v],["__scopeId","data-v-827d2e7c"]]);var F=C},96682:function(a,e,s){a.exports=s.p+"img/404.8ed11fb3.png"}}]); +//# sourceMappingURL=787.d0dbc2dd.js.map \ No newline at end of file diff --git a/frontend-dist/js/787.d0dbc2dd.js.gz b/frontend-dist/js/787.d0dbc2dd.js.gz new file mode 100644 index 0000000..e7ba8ce Binary files /dev/null and b/frontend-dist/js/787.d0dbc2dd.js.gz differ diff --git a/frontend-dist/js/168.16edcf49.js.map b/frontend-dist/js/787.d0dbc2dd.js.map similarity index 98% rename from frontend-dist/js/168.16edcf49.js.map rename to frontend-dist/js/787.d0dbc2dd.js.map index e4c161a..2cca575 100644 --- a/frontend-dist/js/168.16edcf49.js.map +++ b/frontend-dist/js/787.d0dbc2dd.js.map @@ -1 +1 @@ -{"version":3,"file":"js/168.16edcf49.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/NotFound.vue?6456","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=827d2e7c&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=827d2e7c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-827d2e7c\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","src","errorImage","alt","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","computed","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/787.d0dbc2dd.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/NotFound.vue?6456","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=827d2e7c&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=827d2e7c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-827d2e7c\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","src","errorImage","alt","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","computed","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/787.d0dbc2dd.js.map.gz b/frontend-dist/js/787.d0dbc2dd.js.map.gz new file mode 100644 index 0000000..2b7d1e2 Binary files /dev/null and b/frontend-dist/js/787.d0dbc2dd.js.map.gz differ diff --git a/frontend-dist/js/895.df959629.js b/frontend-dist/js/895.df959629.js new file mode 100644 index 0000000..42adbfa --- /dev/null +++ b/frontend-dist/js/895.df959629.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[895],{2893:function(e,t,a){"use strict";a(85331)},3261:function(e,t,a){"use strict";a(85331)},4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,L=n.pw,$=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,L=f.date,$={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||($.crc32=e.crc32,$.compressedSize=e.compressedSize,$.uncompressedSize=e.uncompressedSize);var E=0;t&&(E|=8),p||!w&&!_||(E|=2048);var x=0,D=0;S&&(x|=16),"UNIX"===r?(D=798,x|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(D=20,x|=function(e){return 63&(e||0)}(f.dosPermissions)),h=L.getUTCHours(),h<<=6,h|=L.getUTCMinutes(),h<<=5,h|=L.getUTCSeconds()/2,u=L.getUTCFullYear()-1980,u<<=4,u|=L.getUTCMonth()+1,u<<=5,u|=L.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var I="";return I+="\n\0",I+=i(E,2),I+=m.magic,I+=i(h,2),I+=i(u,2),I+=i($.crc32,4),I+=i($.compressedSize,4),I+=i($.uncompressedSize,4),I+=i(g.length,2),I+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+I+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(D,2)+I+i(k.length,2)+"\0\0\0\0"+i(x,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,L=113,$=1,E=2,x=3,D=4;function I(e,t){return e.msg=l[t],t}function A(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function z(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,B(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function R(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function W(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return $;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,z(e,!1),0===e.strm.avail_out))return $;if(e.strstart-e.block_start>=e.w_size-T&&(z(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):(e.strstart>e.block_start&&(z(e,!1),e.strm.avail_out),$)}),new V(4,4,8,4,N),new V(4,5,16,8,N),new V(4,6,32,32,N),new V(4,4,16,16,M),new V(8,16,32,32,M),new V(8,16,128,128,M),new V(8,32,128,256,M),new V(32,128,258,1024,M),new V(32,258,258,4096,M)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=L);else{var f=g+(n.w_bits-8<<4)<<8;f|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(f|=32),f+=31-f%31,n.status=L,R(n,f),0!==n.strstart&&(R(n,e.adler>>>16),R(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&B(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(B(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&A(t)<=A(a)&&t!==c)return I(e,-5);if(666===n.status&&0!==e.avail_in)return I(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return $;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(z(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?$:E}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return $;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(z(e,!1),0===e.strm.avail_out))return $}return e.insert=0,t===c?(z(e,!0),0===e.strm.avail_out?x:D):e.last_lit&&(z(e,!1),0===e.strm.avail_out)?$:E}(n,t):i[n.level].func(n,t);if(m!==x&&m!==D||(n.status=666),m===$||m===x)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===E&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(P(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),B(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(R(n,e.adler>>>16),R(n,65535&e.adler)),B(e),0=a.w_size&&(0===o&&(P(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,B=8+(15&(y>>>=4)),0===a.wbits)a.wbits=B;else if(B>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(B=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,B)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;B=f[g+S++],a.head&&B&&a.length<65536&&(a.head.name+=String.fromCharCode(B)),B&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,U={bits:a.lenbits},z=o(0,a.lens,0,19,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,D=65535&W,!((E=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=E,w-=E,a.lens[a.have++]=D;else{if(16===D){for(R=E+2;w>>=E,w-=E,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}B=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===D){for(R=E+3;w>>=E)),y>>>=3,w-=3}else{for(R=E+7;w>>=E)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=B}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,U={bits:a.lenbits},z=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,U),a.lenbits=U.bits,z){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,U={bits:a.distbits},z=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,U),a.distbits=U.bits,z){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;x=(W=a.lencode[y&(1<>>16&255,D=65535&W,!((E=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+(E=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=E,w-=E,a.back+=E,a.length=D,0===x){a.mode=26;break}if(32&x){a.back=-1,a.mode=12;break}if(64&x){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&x,a.mode=22;case 22:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;x=(W=a.distcode[y&(1<>>16&255,D=65535&W,!((E=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>I)])>>>16&255,D=65535&W,!(I+(E=W>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=I,w-=I,a.back+=I}if(y>>>=E,w-=E,a.back+=E,64&x){e.msg="invalid distance code",a.mode=30;break}a.offset=D,a.extra=15&x,a.mode=24;case 24:if(a.extra){for(R=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),$=a.window}else $=m,L=b-a.offset,S=a.length;for(kv?(y=U[R+h[C]],A[P+h[C]]):(y=96,0),f=1<>E)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(I&=f-1,I+=f):I=0,C++,0==--B[F]){if(F===S)break;F=t[a+h[C]]}if(L>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function R(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function N(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?q(e,t,a,i):4===e.strategy||o===r?(R(e,2+(i?1:0),3),K(e,T,S)):(R(e,4+(i?1:0),3),function(e,t,a,i){var n;for(R(e,t-257,5),R(e,a-1,5),R(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*($[a]+d+1)]++,e.dyn_dtree[2*z(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){R(e,2,3),W(e,b,T),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;i\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},84344:function(e,t,a){"use strict";a.d(t,{EY:function(){return u},Lh:function(){return d},hP:function(){return h},wt:function(){return o}});a(44114),a(18111),a(61701),a(13579),a(64979);var i=a(70797);const n=262144,s=20971520;function r(e){if(e?.aborted)throw new DOMException("Cancelled","AbortError")}function o(e,t,a){const i=e?.code||e?.message,n=`aiErrors.${i}`,s=a(n)?t(n,{status:e.details?.status||e.status}):t("aiErrors.NETWORK_ERROR"),r=["code","type","requestId"].filter(t=>e?.details?.[t]).map(a=>`${t(`aiErrors.${a}`)}: ${e.details[a]}`);return r.length?`${s} (${r.join(", ")})`:s}const l=e=>({code:e.code||e.message,message:e.message,...e.details?{details:e.details}:{}});async function d(e,t={}){const a=await(0,i.A)(e,t);let n;try{n=await a.json()}catch{const e=new Error(`HTTP ${a.status}`);throw e.code=401===a.status?"AUTH_REQUIRED":a.ok?"INVALID_RESPONSE":"HTTP_ERROR",e.details={status:a.status},e}if(!n||"object"!==typeof n||Array.isArray(n)){const e=new Error("INVALID_RESPONSE");throw e.code="INVALID_RESPONSE",e}if(!a.ok){const e=new Error(n.error?.message||n.message||`HTTP ${a.status}`);throw e.code=n.error?.code||(401===a.status?"AUTH_REQUIRED":"HTTP_ERROR"),e.details={status:a.status,...n.error?.details},e}return n}async function c(e,t){r(t);const a=e.metadata?.FileType?.toLowerCase();if(a&&!["image/jpeg","image/png","image/webp","image/avif","image/gif"].includes(a))throw new Error("UNSUPPORTED_IMAGE");if(Number(e.metadata?.FileSizeBytes)>s)throw new Error("IMAGE_TOO_LARGE");const o=e.name.split("/").map(encodeURIComponent).join("/"),l=await(0,i.A)(`/file/${o}`,{signal:t});if(!l.ok){const e=new Error(`HTTP ${l.status}`);throw e.code="IMAGE_FETCH_FAILED",e.details={status:l.status},e}if(Number(l.headers.get("Content-Length"))>s)throw await(l.body?.cancel()),new Error("IMAGE_TOO_LARGE");const d=l.body.getReader(),c=[];let h=0;try{while(1){r(t);const{value:e,done:a}=await d.read();if(a)break;if(h+=e.byteLength,h>s)throw await d.cancel(),new Error("IMAGE_TOO_LARGE");c.push(e)}}finally{d.releaseLock()}const u=new Blob(c,{type:l.headers.get("Content-Type")||a});let f,m;r(t);try{"function"===typeof createImageBitmap?f=await createImageBitmap(u):(m=URL.createObjectURL(u),f=new Image,await new Promise((e,t)=>{f.onload=e,f.onerror=()=>t(new Error("UNSUPPORTED_IMAGE")),f.src=m})),r(t);const e=f.width||f.naturalWidth,a=f.height||f.naturalHeight;if(!e||!a)throw new Error("UNSUPPORTED_IMAGE");const i=document.createElement("canvas"),s=Math.min(1,768/Math.max(e,a));i.width=Math.max(1,Math.round(e*s)),i.height=Math.max(1,Math.round(a*s));const o=i.getContext("2d");o.fillStyle="#ffffff",o.fillRect(0,0,i.width,i.height),o.drawImage(f,0,0,i.width,i.height);for(const l of[.8,.6,.4]){r(t);const e=await new Promise(e=>i.toBlob(e,"image/jpeg",l));if(e&&e.size<=n&&(e.size<=131072||.4===l))return e}throw new Error("PREVIEW_TOO_LARGE")}catch(p){if(t?.aborted||"AbortError"===p.name||"PREVIEW_TOO_LARGE"===p.message)throw p;throw new Error("UNSUPPORTED_IMAGE")}finally{f?.close?.(),m&&URL.revokeObjectURL(m)}}async function h(e,{signal:t,batchSize:a=3,onResult:i,prepare:n=c}={}){a=Math.max(1,Math.min(3,a));const s=[];for(let c=0;c({fileId:e.file.name})))),h.forEach((e,t)=>u.append(`image${t}`,e.image,"preview.jpg"));try{const e=await d("/api/manage/ai/tags",{method:"POST",body:u,signal:t});if(r(t),!Array.isArray(e.results)||e.results.length!==h.length)throw new Error("INVALID_RESPONSE");for(let t=0;t"string"!==typeof e)||!/^[a-f0-9]{64}$/.test(a.sourceIdentity)))throw new Error("INVALID_RESPONSE")}for(const t of e.results)s.push(t),i?.(t)}catch(o){if(t?.aborted||"AbortError"===o.name)throw o;for(const e of h){const t={fileId:e.file.name,error:l(o)};s.push(t),i?.(t)}}}return s}async function u(e,t){const a=[];for(let n=0;n!e||e.fileId!==s[t].fileId||"boolean"!==typeof e.saved||e.saved&&(!Array.isArray(e.tags)||e.tags.some(e=>"string"!==typeof e))))throw new Error("INVALID_RESPONSE");for(const i of e.results)a.push(i),t?.(i)}catch(i){for(const e of s){const n={fileId:e.fileId,saved:!1,error:l(i)};a.push(n),t?.(n)}}}return a}},88642:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return _s}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(31802)),r=(a(13378),a(9267)),o=(a(15616),a(33892)),l=a(80047),d=(a(99648),a(39623)),c=(a(29092),a(56768)),h=a(24232);const u={class:"move-file-dialog-wrapper"},f={class:"move-dialog-content"},m={class:"move-path-input-container"},p={class:"move-dialog-hint"},g={class:"dialog-footer"},b={class:"move-drawer-content"},v={class:"move-path-section"},k={class:"move-path-label"},y={class:"move-path-input-row"},w={class:"move-dialog-hint"},_={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},S={key:0,class:"error-state"},L={class:"error-text"},$={class:"node-label"},E={class:"drawer-footer"};function x(e,t,a,x,D,I){const A=d.WK,P=(0,c.g2)("font-awesome-icon"),B=l.S2,z=o.A,U=r.kZ,R=s.qk,W=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[I.isDesktop?((0,c.uX)(),(0,c.Wv)(U,{key:0,modelValue:I.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>I.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(B,{onClick:I.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(z,{"current-directory":a.currentDirectory,source:"admin",onSelect:I.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(B,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(W,{key:1,modelValue:I.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>I.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:I.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",E,[(0,c.bF)(B,{onClick:I.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(B,{type:"primary",loading:D.loading,onClick:I.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(A,{modelValue:D.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>D.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(B,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>D.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),D.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(B,{text:"",onClick:t[4]||(t[4]=e=>D.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(P,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[D.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(P,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(D.treeError),1),(0,c.bF)(B,{type:"primary",size:"small",onClick:I.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(R,{key:1,ref:"treeRef",data:D.treeData,props:D.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:I.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(P,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",$,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,D.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var D=a(70797),I={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,D.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},A=a(71241);const P=(0,A.A)(I,[["render",x],["__scopeId","data-v-7aaa437c"]]);var B=P,z=a(45130);const U={class:"mobile-drawer-header"},R={class:"mobile-drawer-title"},W={class:"mobile-drawer-content"},O=["onClick"];function N(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",U,[(0,c.Lk)("span",R,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",W,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var M={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,A.A)(M,[["render",N],["__scopeId","data-v-feeadb1c"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(z.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,z.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const Q=(0,A.A)(H,[["render",G],["__scopeId","data-v-f5c66568"]]);var q=Q,Y=a(4275),J=a(11012),ee=a(89559),te=(a(85332),a(12687)),ae=(a(18785),a(69655)),ie=(a(2893),a(78507));a(213),a(44114);const ne={class:"ai-tags"},se={class:"ai-toolbar"},re={class:"ai-heading"},oe={class:"ai-heading-icon"},le={key:0,class:"ai-empty"},de={class:"ai-empty-icon"},ce={class:"ai-empty-title"},he={key:1,class:"ai-empty ai-ready"},ue={class:"ai-empty-icon"},fe={class:"ai-empty-title"},me={key:2,class:"ai-progress"},pe={class:"ai-progress-label"},ge={key:3,class:"ai-results"},be={class:"ai-result-heading"},ve={class:"ai-file"},ke={key:1,class:"ai-tag-list"},ye={key:0,class:"ai-empty-title"},we={key:4,class:"ai-footer"},_e={class:"ai-selection"},Fe={class:"ai-footer-actions"};function Ce(e,t,a,n,s,r){const o=(0,c.g2)("font-awesome-icon"),d=ie.R7,u=l.S2,f=ae.ve,m=te.u,p=ee.KR,g=J.mO,b=i.A;return(0,c.bo)(((0,c.uX)(),(0,c.CE)("section",ne,[(0,c.Lk)("div",se,[(0,c.Lk)("div",re,[(0,c.Lk)("span",oe,[(0,c.bF)(o,{icon:"robot"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("aiTags.tab")),1),(0,c.bF)(d,{content:e.$t("aiTags.hint"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"question-circle",class:"help-icon"})]),_:1},8,["content"])]),s.available?((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",loading:s.generating,disabled:a.disabled||s.saving||!a.files.length,onClick:t[0]||(t[0]=e=>r.generate(!1))},{default:(0,c.k6)(()=>[s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"tags"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.generate")),1)]),_:1},8,["loading","disabled"])):(0,c.Q3)("",!0)]),s.loadingConfig||s.available?!s.available||s.rows.length||s.generating?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("div",he,[(0,c.Lk)("span",ue,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("span",fe,(0,h.v_)(e.$t("aiTags.ready")),1)])):((0,c.uX)(),(0,c.CE)("div",le,[(0,c.Lk)("span",de,[(0,c.bF)(o,{icon:"cog"})]),(0,c.Lk)("span",ce,(0,h.v_)(s.configError||e.$t("aiTags.disabled")),1),(0,c.bF)(u,{type:"primary",plain:"",onClick:t[1]||(t[1]=t=>e.$router.push("/systemConfig#ai"))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"cog"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.settings")),1)]),_:1})])),s.generating?((0,c.uX)(),(0,c.CE)("div",me,[(0,c.Lk)("div",pe,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("aiTags.progress",{done:s.completed,total:s.workTotal})),1),(0,c.bF)(u,{size:"small",onClick:r.cancel},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("aiTags.cancel")),1)]),_:1},8,["onClick"])]),(0,c.bF)(f,{percentage:s.workTotal?Math.round(s.completed/s.workTotal*100):0,"show-text":!1,"stroke-width":6},null,8,["percentage"])])):(0,c.Q3)("",!0),s.rows.length?((0,c.uX)(),(0,c.CE)("div",ge,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.rows,t=>((0,c.uX)(),(0,c.CE)("div",{key:t.fileId,class:"ai-result"},[(0,c.Lk)("div",be,[(0,c.bF)(o,{icon:"image",class:"ai-file-icon"}),(0,c.Lk)("span",ve,(0,h.v_)(r.fileName(t.fileId)),1),t.applied?((0,c.uX)(),(0,c.Wv)(m,{key:0,size:"small",type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"check"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.saved")),1)]),_:1})):(0,c.Q3)("",!0)]),t.error?((0,c.uX)(),(0,c.Wv)(p,{key:0,title:r.errorText(t.error),type:"error","show-icon":"",closable:!1},null,8,["title"])):((0,c.uX)(),(0,c.CE)("div",ke,[t.applied?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(t.selected,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,type:"success",effect:"light"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128)):((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(t.tags,e=>((0,c.uX)(),(0,c.Wv)(g,{key:e,checked:t.selected.includes(e),"aria-disabled":a.disabled||s.saving||s.generating,onChange:a=>r.toggleTag(t,e)},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["checked","aria-disabled","onChange"]))),128)),t.tags.length?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.CE)("span",ye,(0,h.v_)(e.$t("aiTags.noTags")),1))],64))])),t.saveError?((0,c.uX)(),(0,c.Wv)(p,{key:2,title:t.saveError,type:"warning","show-icon":"",closable:!1,class:"ai-save-error"},null,8,["title"])):(0,c.Q3)("",!0)]))),128))])):(0,c.Q3)("",!0),s.rows.length&&!s.generating?((0,c.uX)(),(0,c.CE)("div",we,[(0,c.Lk)("span",_e,(0,h.v_)(e.$t("aiTags.selection",{count:r.selectedCount})),1),(0,c.Lk)("div",Fe,[r.retryFiles.length?((0,c.uX)(),(0,c.Wv)(u,{key:0,disabled:a.disabled||s.saving,onClick:t[2]||(t[2]=e=>r.generate(!0))},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)((0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["disabled"])):(0,c.Q3)("",!0),(0,c.bF)(u,{type:"primary",loading:s.saving,disabled:a.disabled||!r.pending.length,onClick:r.apply},{default:(0,c.k6)(()=>[s.saving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save"})),(0,c.eW)((0,h.v_)(e.$t("aiTags.apply")),1)]),_:1},8,["loading","disabled","onClick"])])])):(0,c.Q3)("",!0)])),[[b,s.loadingConfig]])}a(20116),a(61701),a(18237),a(13579);var Te=a(84344),Se={name:"AITagPanel",props:{files:{type:Array,required:!0},disabled:{type:Boolean,default:!1}},emits:["applied","busy"],data(){return{available:!1,configError:"",loadingConfig:!0,batchSize:3,generating:!1,saving:!1,rows:[],completed:0,workTotal:0}},computed:{fileSignature(){return JSON.stringify(this.files.map(e=>e.name))},selectedCount(){return this.pending.reduce((e,t)=>e+t.selected.length,0)},retryFiles(){return this.files.filter(e=>this.rows.some(t=>t.fileId===e.name&&t.error))},pending(){return this.rows.filter(e=>!e.error&&!e.applied&&e.selected.length)}},watch:{fileSignature(){this.cancel(),this.rows=[]}},async mounted(){try{const e=await(0,Te.Lh)("/api/manage/ai/tags");this.available=e.enabled,this.batchSize=e.maxBatchSize}catch(e){this.configError=this.errorText(e)}finally{this.loadingConfig=!1}},beforeUnmount(){this.cancel()},methods:{fileName(e){return this.files.find(t=>t.name===e)?.metadata?.FileName||e},errorText(e){return(0,Te.wt)(e,this.$t,this.$te)},toggleTag(e,t){this.disabled||this.saving||this.generating||(e.selected=e.selected.includes(t)?e.selected.filter(e=>e!==t):[...e.selected,t])},cancel(){this.controller?.abort()},async generate(e){if(this.disabled||this.generating||this.saving)return;const t=e?this.retryFiles:[...this.files],a=this.fileSignature;e||(this.rows=[]);const i=new AbortController;this.controller=i,this.generating=!0,this.completed=0,this.workTotal=t.length,this.$emit("busy",!0);try{await(0,Te.hP)(t,{signal:i.signal,batchSize:this.batchSize,onResult:e=>{if(i.signal.aborted||a!==this.fileSignature)return;const t={...e,selected:[...e.tags||[]],applied:!1,saveError:""},n=this.rows.findIndex(t=>t.fileId===e.fileId);-1===n?this.rows.push(t):this.rows.splice(n,1,t),this.completed++}})}catch(n){if(a!==this.fileSignature)return;if("AbortError"===n.name)for(const e of t)if(!this.rows.some(t=>t.fileId===e.name&&!t.error)){const t=this.rows.findIndex(t=>t.fileId===e.name),a={fileId:e.name,error:{message:"CANCELLED"},selected:[],applied:!1};-1===t?this.rows.push(a):"CANCELLED"===this.rows[t].error?.message&&this.rows.splice(t,1,a)}"AbortError"!==n.name&&this.$message.error(this.errorText(n))}finally{this.generating=!1,this.$emit("busy",!1)}},async apply(){if(!(this.disabled||this.saving||this.generating)){this.saving=!0,this.$emit("busy",!0);try{await(0,Te.EY)(this.pending.map(e=>({fileId:e.fileId,tags:e.selected,sourceIdentity:e.sourceIdentity,repairIndex:!!e.indexPending})),e=>{const t=this.rows.find(t=>t.fileId===e.fileId);t&&(t.indexPending=!!e.indexPending,t.applied=e.saved&&!e.indexPending,t.saveError=e.indexPending?this.$t("aiTags.indexPending"):e.error?this.errorText(e.error):"",e.saved&&this.$emit("applied",[e]))})}catch(e){this.$message.error(this.errorText(e))}finally{this.saving=!1,this.$emit("busy",!1)}}}}};const Le=(0,A.A)(Se,[["render",Ce],["__scopeId","data-v-954f5f34"]]);var $e=Le;const Ee={class:"tag-dialog-content batch-tag-container"},xe={class:"tag-file-summary"},De={class:"tag-tab-label"},Ie={class:"tag-section"},Ae={class:"tag-section-header"},Pe={class:"tag-section-icon"},Be={class:"tag-section-actions"},ze={class:"tag-count"},Ue=["aria-label"],Re={class:"input-section"},We={class:"tag-input-row"},Oe={key:0,class:"suggestions-panel"},Ne=["disabled","onClick"],Me={key:0,class:"tags-container"},Ve={key:1,class:"empty-message"},Xe={class:"action-buttons"},je={class:"tag-tab-label"},Ke={class:"tag-section"},Ze={class:"tag-section-header"},Ge={class:"tag-section-icon muted"},He={class:"tag-section-actions"},Qe={class:"tag-count"},qe=["aria-label"],Ye={key:0,class:"tags-container"},Je={key:1,class:"empty-message"},et={class:"tag-tab-label"},tt={class:"tag-section tag-danger-section"},at={class:"tag-section-header"},it={class:"tag-section-icon danger"},nt={class:"action-buttons"},st={class:"tag-tab-label"};function rt(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=ee.KR,m=ie.R7,p=d.WK,g=te.u,b=Y.v$,v=$e,k=Y.q,y=r.kZ;return(0,c.uX)(),(0,c.Wv)(y,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[3]||(t[3]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ee,[(0,c.Lk)("div",xe,[(0,c.bF)(o,{icon:"images"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.selectedFiles",{count:s.fileCount})),1)]),n.pendingIndexIds.length?((0,c.uX)(),(0,c.Wv)(f,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(u,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),(0,c.bF)(k,{modelValue:n.activeTab,"onUpdate:modelValue":t[2]||(t[2]=e=>n.activeTab=e),class:"tag-operation-tabs","before-leave":s.beforeTabChange},{default:(0,c.k6)(()=>[(0,c.bF)(b,{name:"add"},{label:(0,c.k6)(()=>[(0,c.Lk)("span",De,[(0,c.bF)(o,{icon:"plus"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.addTab")),1)])]),default:(0,c.k6)(()=>[(0,c.Lk)("section",Ie,[(0,c.Lk)("div",Ae,[(0,c.Lk)("span",Pe,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),(0,c.Lk)("div",Be,[(0,c.Lk)("span",ze,(0,h.v_)(n.tagsToAdd.length),1),(0,c.bF)(m,{content:e.$t("batchTag.addDescription",{count:s.fileCount}),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{type:"button",class:"tag-help-button","aria-label":e.$t("batchTag.addDescription",{count:s.fileCount})},[(0,c.bF)(o,{icon:"question-circle"})],8,Ue)]),_:1},8,["content"])])]),(0,c.Lk)("div",Re,[(0,c.Lk)("div",We,[(0,c.bF)(p,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.loading||n.aiBusy,placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{prefix:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"hashtag"})]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),(0,c.bF)(u,{class:"tag-add-button",type:"primary",disabled:n.loading||n.aiBusy||!n.inputTag.trim(),"aria-label":e.$t("batchTag.addTab"),onClick:s.handleAddInputTag},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["disabled","aria-label","onClick"])]),n.showSuggestions&&n.suggestions.length?((0,c.uX)(),(0,c.CE)("div",Oe,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("button",{key:e,type:"button",class:"suggestion-item",disabled:n.loading||n.aiBusy,onClick:t=>s.selectSuggestion(e)},[(0,c.bF)(o,{icon:"hashtag"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],8,Ne))),128))])):(0,c.Q3)("",!0)]),n.tagsToAdd.length?((0,c.uX)(),(0,c.CE)("div",Me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(g,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.removeFromToAdd(e),class:"tag-chip",round:""},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ve,[(0,c.bF)(o,{icon:"tag"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.noPendingTags")),1)])),(0,c.Lk)("div",Xe,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:!n.tagsToAdd.length||!s.fileCount},{default:(0,c.k6)(()=>[n.loading?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"plus"})),(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,c.bF)(b,{name:"remove"},{label:(0,c.k6)(()=>[(0,c.Lk)("span",je,[(0,c.bF)(o,{icon:"minus"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.removeTab")),1)])]),default:(0,c.k6)(()=>[(0,c.Lk)("section",Ke,[(0,c.Lk)("div",Ze,[(0,c.Lk)("span",Ge,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",He,[(0,c.Lk)("span",Qe,(0,h.v_)(n.commonTags.length),1),(0,c.bF)(m,{content:e.$t("batchTag.removeDescription"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{type:"button",class:"tag-help-button","aria-label":e.$t("batchTag.removeDescription")},[(0,c.bF)(o,{icon:"question-circle"})],8,qe)]),_:1},8,["content"])])]),n.commonTags.length?((0,c.uX)(),(0,c.CE)("div",Ye,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(g,{key:e,closable:!n.loading&&!n.aiBusy,onClose:t=>s.handleRemoveCommonTag(e),class:"tag-chip",type:"warning",round:""},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Je,[(0,c.bF)(o,{icon:"tag"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.noCommonTags")),1)]))])]),_:1}),(0,c.bF)(b,{name:"clear"},{label:(0,c.k6)(()=>[(0,c.Lk)("span",et,[(0,c.bF)(o,{icon:"trash-alt"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("batchTag.clearTab")),1)])]),default:(0,c.k6)(()=>[(0,c.Lk)("section",tt,[(0,c.Lk)("div",at,[(0,c.Lk)("span",it,[(0,c.bF)(o,{icon:"trash-alt"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.clearTab")),1)]),(0,c.bF)(f,{title:e.$t("batchTag.clearWarningDesc"),type:"warning",closable:!1,"show-icon":""},null,8,["title"]),(0,c.Lk)("div",nt,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading,disabled:!s.fileCount},{default:(0,c.k6)(()=>[n.loading?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"trash-alt"})),(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,c.bF)(b,{name:"ai",lazy:""},{label:(0,c.k6)(()=>[(0,c.Lk)("span",st,[(0,c.bF)(o,{icon:"robot"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("aiTags.tab")),1)])]),default:(0,c.k6)(()=>[s.visible?((0,c.uX)(),(0,c.Wv)(v,{key:0,files:s.selectedFilesOnly,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)]),_:1})]),_:1},8,["modelValue","before-leave"])])]),_:1},8,["title","modelValue","width","before-close","onClose"])}a(81148),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var ot=a(51219),lt=a(12933),dt={name:"BatchTagDialog",components:{AITagPanel:$e},props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,pendingIndexIds:[],aiBusy:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(600px, 90vw)"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},beforeTabChange(){return!this.aiBusy&&!this.loading},handleAIResults(e){this.updateSavedTags(e)},updateSavedTags(e){const t=new Set(this.pendingIndexIds);for(const a of e)a.saved&&(a.indexPending?t.add(a.fileId):t.delete(a.fileId));this.pendingIndexIds=[...t],this.$emit("tagsUpdated",e),this.loadCommonTags(e)},finishTagOperation(e,t){return this.updateSavedTags(e.results),e.success?ot.nk.success(this.$t(t,{count:e.updated})):ot.nk.warning(this.$t("batchTag.partialSave",{saved:e.results.filter(e=>e.saved&&!e.indexPending).length,total:e.results.length})),e.success},async repairIndex(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.pendingIndexIds,tags:[],action:"add",repairIndexIds:this.pendingIndexIds})});if(!e.ok)throw new Error;this.finishTagOperation(await e.json(),"batchTag.addSuccess")}catch{ot.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}},resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add",this.pendingIndexIds=[]},loadCommonTags(e=[]){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags])),a=this.selectedFilesOnly.map(e=>t.get(e.name)||e.metadata?.Tags||[]);this.commonTags=a.length?a[0].filter(e=>a.every(t=>t.includes(e))):[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){if(this.loading||this.aiBusy)return;const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ot.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){if(this.loading||this.aiBusy)return;const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(!this.loading&&!this.aiBusy)if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.addSuccess")&&(this.tagsToAdd=[])}}catch(e){console.error("Error adding tags:",e),ot.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ot.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const t=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();this.finishTagOperation(e,"batchTag.removeSuccess")}}catch(t){console.error("Error removing tag:",t),ot.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}}},handleClearAllTags(){this.loading||this.aiBusy||lt.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ot.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){if(!this.loading&&!this.aiBusy){this.loading=!0;try{const e=await(0,D.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,repairIndexIds:this.pendingIndexIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();this.finishTagOperation(t,"batchTag.clearSuccess")}}catch(e){console.error("Error clearing tags:",e),ot.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}}},handleClose(){this.aiBusy||this.loading||(this.visible=!1)}}};const ct=(0,A.A)(dt,[["render",rt],["__scopeId","data-v-3cead2c5"]]);var ht=ct,ut=a(813);a(34896);const ft={class:"tag-dialog-content tag-management-container"},mt={class:"tag-section"},pt={class:"tag-section-header"},gt={class:"tag-section-icon"},bt={class:"tag-count"},vt={class:"input-section"},kt={class:"tag-input-row"},yt={key:0,class:"suggestions-panel"},wt=["disabled","onClick"],_t={key:0,class:"tags-container"},Ft={key:1,class:"empty-message"},Ct={class:"tag-section"},Tt={class:"tag-section-header"},St={class:"tag-section-icon muted"},Lt={key:0,class:"tags-container"},$t={key:1,class:"empty-message"},Et={key:2,class:"empty-message"},xt={class:"dialog-footer"};function Dt(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=d.WK,f=l.S2,m=te.u,p=(0,c.g2)("Loading"),g=ut.tk,b=ee.KR,v=$e,k=r.kZ;return(0,c.uX)(),(0,c.Wv)(k,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,"before-close":s.beforeClose,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",xt,[(0,c.bF)(f,{disabled:n.aiBusy||n.loading,onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["disabled","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("section",mt,[(0,c.Lk)("div",pt,[(0,c.Lk)("span",gt,[(0,c.bF)(o,{icon:"tags"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),(0,c.Lk)("span",bt,(0,h.v_)(n.currentTags.length),1)]),(0,c.Lk)("div",vt,[(0,c.Lk)("div",kt,[(0,c.bF)(u,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),disabled:n.aiBusy||n.loading,placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,z.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{prefix:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"hashtag"})]),_:1},8,["modelValue","disabled","placeholder","onKeyup","onInput"]),(0,c.bF)(f,{class:"tag-add-button",type:"primary",disabled:n.aiBusy||n.loading||!n.inputTag.trim(),"aria-label":e.$t("batchTag.addTab"),onClick:s.handleAddTag},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["disabled","aria-label","onClick"])]),n.showSuggestions&&n.suggestions.length?((0,c.uX)(),(0,c.CE)("div",yt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("button",{key:e,type:"button",class:"suggestion-item",disabled:n.aiBusy||n.loading,onClick:t=>s.selectSuggestion(e)},[(0,c.bF)(o,{icon:"hashtag"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],8,wt))),128))])):(0,c.Q3)("",!0)]),n.currentTags.length?((0,c.uX)(),(0,c.CE)("div",_t,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:!n.aiBusy&&!n.loading,onClose:t=>s.handleRemoveTag(e),class:"tag-chip",round:""},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["closable","onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ft,[(0,c.bF)(o,{icon:"tag"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("tagManagement.noTags")),1)]))]),(0,c.Lk)("section",Ct,[(0,c.Lk)("div",Tt,[(0,c.Lk)("span",St,[(0,c.bF)(o,{icon:"hashtag"})]),(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1)]),n.popularTags.length?((0,c.uX)(),(0,c.CE)("div",Lt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,type:"info",round:"",class:"tag-chip tag-choice",role:"button",tabindex:n.aiBusy||n.loading?-1:0,"aria-disabled":n.aiBusy||n.loading,onClick:t=>s.handleAddPopularTag(e),onKeydown:[(0,z.jR)((0,z.D$)(t=>s.handleAddPopularTag(e),["prevent"]),["enter"]),(0,z.jR)((0,z.D$)(t=>s.handleAddPopularTag(e),["prevent"]),["space"])]},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["tabindex","aria-disabled","onClick","onKeydown"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",$t,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Et,[(0,c.bF)(o,{icon:"tag"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1)]))]),n.indexPending?((0,c.uX)(),(0,c.Wv)(b,{key:0,title:e.$t("tagManagement.indexPending"),type:"warning","show-icon":"",closable:!1},{default:(0,c.k6)(()=>[(0,c.bF)(f,{size:"small",loading:n.loading,disabled:n.aiBusy,onClick:s.repairIndex},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"redo"}),(0,c.eW)(" "+(0,h.v_)(e.$t("aiTags.retry")),1)]),_:1},8,["loading","disabled","onClick"])]),_:1},8,["title"])):(0,c.Q3)("",!0),s.visible?((0,c.uX)(),(0,c.Wv)(v,{key:1,class:"single-ai-panel",files:s.aiFiles,disabled:n.loading,onBusy:t[1]||(t[1]=e=>n.aiBusy=e),onApplied:s.handleAIResults},null,8,["files","disabled","onApplied"])):(0,c.Q3)("",!0)])]),_:1},8,["title","modelValue","width","before-close","onClose"])}var It=a(57477),At={name:"TagManagementDialog",components:{Loading:It.Loading,AITagPanel:$e},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0},fileMetadata:{type:Object,default:()=>({})}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,indexPending:!1,aiBusy:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{aiFiles(){return this.fileId?[{name:this.fileId,metadata:this.fileMetadata}]:[]},visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return"min(500px, 90vw)"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},beforeUnmount(){clearTimeout(this.debounceTimer)},methods:{beforeClose(e){this.aiBusy||this.loading||e()},handleAIResults(e){const t=e.find(e=>e.fileId===this.fileId);t&&(this.currentTags=t.tags,this.$emit("tagsUpdated",t.tags))},async repairIndex(){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const e=await(0,Te.Lh)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[],repairIndex:!0})});this.currentTags=e.tags,this.indexPending=!!e.indexPending,this.$emit("tagsUpdated",this.currentTags)}catch(e){ot.nk.error((0,Te.wt)(e,this.$t,this.$te))}finally{this.loading=!1}}},async loadFileTags(){this.loading=!0;try{const e=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ot.nk.error(this.$t("tagManagement.loadFailed"))}finally{this.loading=!1}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,D.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,D.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){if(this.aiBusy||this.loading)return;const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ot.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",repairIndex:this.indexPending,tags:[e]})});if(t.ok){const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,this.inputTag="",this.showSuggestions=!1,e.indexPending||ot.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}else{const e=await t.json();ot.nk.error((0,Te.wt)(e.error||{code:"INTERNAL_ERROR"},this.$t,this.$te))}}catch(t){console.error("Error adding tag:",t),ot.nk.error(this.$t("tagManagement.addFailed"))}finally{this.loading=!1}}},async handleRemoveTag(e){if(!this.aiBusy&&!this.loading){this.loading=!0;try{const t=await(0,D.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",repairIndex:this.indexPending,tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],this.indexPending=!!e.indexPending,e.indexPending||ot.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ot.nk.error(this.$t("tagManagement.removeFailed"))}finally{this.loading=!1}}},handleAddPopularTag(e){this.aiBusy||this.loading||(this.inputTag=e,this.handleAddTag())},handleClose(){this.aiBusy||this.loading||(this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.indexPending=!1,this.popularTags=[])}}};const Pt=(0,A.A)(At,[["render",Dt],["__scopeId","data-v-828386e4"]]);var Bt=Pt,zt=a(55558),Ut=(a(10456),a(66810)),Rt=(a(4885),a(82006)),Wt=(a(98642),a(63003),a(59869)),Ot=(a(70415),a(73565),a(57009));a(78450);const Nt={class:"detail-actions"},Mt={class:"preview-section"},Vt={class:"preview-content"},Xt=["src"],jt=["src"],Kt={key:1},Zt={key:1},Gt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},Ht={key:1,style:{color:"var(--el-text-color-secondary)"}},Qt={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},qt={key:1,style:{color:"var(--el-text-color-secondary)"}};function Yt(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ot.Zq,b=Wt.MF,v=te.u,k=Wt.TS,y=Rt.xE,w=Rt.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Nt,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",Mt,[(0,c.Lk)("div",Vt,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Xt)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,jt)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Kt,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Zt,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",Gt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",Ht,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",Qt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",qt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,z.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const Jt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ea(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:Jt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var ta={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ot.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ot.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ot.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ea(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,D.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ot.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ot.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const aa=(0,A.A)(ta,[["render",Yt],["__scopeId","data-v-550287cc"]]);var ia=aa;const na={key:0,class:"batch-floating-bar"},sa={class:"batch-selection-summary"},ra={class:"batch-selection-count"},oa={class:"batch-floating-actions"};function la(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ie.R7;return(0,c.uX)(),(0,c.Wv)(z.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",na,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("div",sa,[(0,c.Lk)("span",ra,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",oa,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var da={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const ca=(0,A.A)(da,[["render",la],["__scopeId","data-v-49301bcc"]]);var ha=ca,ua=a(54880),fa=(a(4318),a(77815)),ma=(a(72907),a(98469));a(38736);const pa={class:"list-col list-col-checkbox"},ga=["src"],ba=["src"],va=["title"],ka={class:"filename-start"},ya={class:"filename-end"},wa={class:"list-col list-col-tags"},_a={key:1,class:"list-empty"},Fa={class:"list-col list-col-channel"},Ca={class:"list-col list-col-channel-name"},Ta={key:0,class:"channel-name-box"},Sa={key:1,class:"list-empty"},La={class:"list-col list-col-address"},$a={key:0,class:"address-box"},Ea={key:1,class:"list-empty"},xa={class:"list-col list-col-size"},Da={class:"list-col list-col-date"},Ia={class:"list-col list-col-actions"};function Aa(e,t,a,i,n,s){const r=ma.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[10]||(t[10]=t=>e.$emit("touchstart",t)),onTouchend:t[11]||(t[11]=t=>e.$emit("touchend",t)),onTouchmove:t[12]||(t[12]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",pa,[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onClick:t[1]||(t[1]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectChange},null,8,["modelValue","onChange"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,ga)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,ba)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[3]||(t[3]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",ka,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",ya,(0,h.v_)(s.fileNameEnd),1)],8,va)]),(0,c.Lk)("div",wa,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",_a,"-"))]),(0,c.Lk)("div",Fa,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Ca,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Ta,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Sa,"-"))]),(0,c.Lk)("div",La,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",$a,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Ea,"-"))]),(0,c.Lk)("div",xa,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Da,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Ia,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,z.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[8]||(t[8]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[9]||(t[9]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Pa={name:"FileListItem",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{handleSelectChange(e){this.localSelected=e,this.$emit("update:selected",e)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Ba=(0,A.A)(Pa,[["render",Aa],["__scopeId","data-v-25a3242c"]]);var za=Ba,Ua=a(70683);a(95385);const Ra={class:"file-short-info"},Wa={key:0,class:"success-tag"},Oa={key:1,class:"fail-tag"},Na={key:2,class:"success-tag"},Ma={key:3,class:"primary-tag"},Va={key:0,style:{"margin-left":"2px"}},Xa={key:0,class:"skeleton-wrapper"},ja={class:"error-text"},Ka=["src"],Za={class:"error-text"},Ga={key:3,class:"file-preview"},Ha={class:"card-bottom-overlay"},Qa={class:"file-name-row"},qa={class:"file-name"},Ya={class:"action-bar"},Ja={class:"action-bar-left"},ei={class:"action-bar-right"};function ti(e,t,a,i,n,s){const r=ma.dI,o=(0,c.g2)("font-awesome-icon"),l=Ot.Zq,d=ie.R7,u=Ua.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Ra,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Wa,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Oa,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Na,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",Ma,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",Va," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",Xa)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",ja,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,Ka),[[z.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",Za,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",Ga,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",Ha,[(0,c.Lk)("div",Qa,[(0,c.Lk)("span",qa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",Ya,[(0,c.Lk)("div",Ja,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,z.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",ei,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,z.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var ai={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ii=(0,A.A)(ai,[["render",ti],["__scopeId","data-v-956fb02e"]]);var ni=ii;const si={class:"card-bottom-overlay"},ri={class:"file-name-row"},oi={class:"file-name"},li={key:0,class:"action-bar"},di={class:"action-bar-right"};function ci(e,t,a,i,n,s){const r=ma.dI,o=(0,c.g2)("font-awesome-icon"),l=ie.R7,d=Ua.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",si,[(0,c.Lk)("div",ri,[(0,c.Lk)("span",oi,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",li,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",di,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,z.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,z.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,z.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var hi={name:"FolderCard",props:{name:{type:String,required:!0},selected:{type:Boolean,default:!1},showActions:{type:Boolean,default:!0},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","enter","copy","move","delete","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected}},computed:{folderName(){const e=this.name.split("/").filter(Boolean);return e[e.length-1]||this.name}},watch:{selected(e){this.localSelected=e}}};const ui=(0,A.A)(hi,[["render",ci],["__scopeId","data-v-534cf01b"]]);var fi=ui;function mi(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var pi={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const gi=(0,A.A)(pi,[["render",mi],["__scopeId","data-v-070880ec"]]);var bi=gi,vi=a(81095),ki=a(62086),yi=(a(40670),a(88830),a(23597),a(58165));a(34396),a(3261);const wi=["aria-checked"];function _i(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,z.jR)((0,z.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[(0,c.bF)(r,{icon:s.markIcon,class:"dashboard-checkbox-mark"},null,8,["icon"])],42,wi)}var Fi={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"breadcrumb",validator:e=>["breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"},markIcon(){return this.indeterminate&&!this.checked?"minus":"check"}},methods:{handleClick(e){this.$emit("click",e)}}};const Ci=(0,A.A)(Fi,[["render",_i],["__scopeId","data-v-3757bfa7"]]);var Ti=Ci,Si=(a(77128),a(49187),a(77788));a(72099);const Li={class:"el-dropdown-link filter-trigger"},$i={class:"filter-section"},Ei={class:"filter-title"},xi={class:"filter-options"},Di={class:"filter-section"},Ii={class:"filter-title"},Ai={class:"filter-options"},Pi={class:"filter-section"},Bi={class:"filter-title"},zi={class:"filter-options"},Ui={class:"filter-section"},Ri={class:"filter-title"},Wi={class:"filter-options"},Oi={class:"filter-section"},Ni={class:"filter-title"},Mi={class:"filter-options"},Vi={key:0,class:"filter-section"},Xi={class:"filter-title"},ji={class:"filter-options"},Ki={key:0,class:"channel-divider"},Zi={class:"channel-group-title"},Gi={class:"filter-actions"};function Hi(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Si.z_,d=ma.dI,u=ma.o5,f=l.S2,m=ki.Iy,p=ki.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",$i,[(0,c.Lk)("div",Ei,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",xi,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Di,[(0,c.Lk)("div",Ii,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Ai,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Pi,[(0,c.Lk)("div",Bi,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",zi,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ui,[(0,c.Lk)("div",Ri,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Wi,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Oi,[(0,c.Lk)("div",Ni,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Mi,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",Vi,[(0,c.Lk)("div",Xi,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",ji,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ki)):(0,c.Q3)("",!0),(0,c.Lk)("div",Zi,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",Gi,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",Li,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588);var Qi={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const qi=(0,A.A)(Qi,[["render",Hi],["__scopeId","data-v-42919522"]]);var Yi=qi,Ji=a(20620);const en={class:"container"},tn={class:"header-content admin-header-content"},an={class:"search-area"},nn={class:"search-card"},sn={class:"actions"},rn={class:"el-dropdown-link"},on={class:"breadcrumb-container"},ln=["title","aria-pressed"],dn=["title","aria-pressed"],cn=["title"],hn={class:"breadcrumb-sort-icon",viewBox:"0 0 30 18","aria-hidden":"true"},un={key:0,class:"sort-field-glyph"},fn={key:1,class:"sort-field-glyph"},mn={key:2,class:"sort-field-glyph"},pn={key:3,class:"sort-field-glyph"},gn={key:4,class:"sort-order-glyph",d:"M23 13.5V4.5M19 8.5L23 4.5L27 8.5"},bn={key:5,class:"sort-order-glyph",d:"M23 4.5V13.5M19 9.5L23 13.5L27 9.5"},vn={class:"sort-order-wrapper"},kn={class:"mobile-directory-path"},yn={class:"breadcrumb desktop-only"},wn=["title"],_n={key:1,class:"empty-state"},Fn={class:"empty-text"},Cn={class:"empty-hint"},Tn={class:"list-header"},Sn={class:"list-col list-col-checkbox"},Ln={class:"list-col list-col-preview"},$n={class:"list-col list-col-name"},En={class:"list-col list-col-tags"},xn={class:"list-col list-col-channel"},Dn={class:"list-col list-col-channel-name"},In={class:"list-col list-col-address"},An={class:"list-col list-col-size"},Pn={class:"list-col list-col-date"},Bn={class:"list-col list-col-actions"},zn={key:1,class:"empty-state list-empty"},Un={class:"empty-text"},Rn={class:"empty-hint"},Wn={class:"pagination-container"},On={class:"pagination-center"},Nn={class:"pagination-right"},Mn={class:"page-total"},Vn={class:"page-jump"},Xn={class:"dialog-section"},jn={class:"section-header"},Kn={class:"section-title"},Zn={class:"section-content"},Gn={class:"dialog-section"},Hn={class:"section-header"},Qn={class:"section-title"},qn={class:"section-content"},Yn={class:"setting-item"},Jn={class:"setting-label"},es={key:0,class:"setting-item"},ts={class:"setting-label"},as={class:"dialog-action"};function is(e,t,a,i,n,s){const o=Ji.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=Yi,p=ie.R7,g=ua.bZ,b=Ti,v=Ut.Zh,k=Ut.MQ,y=yi.fR,w=ki.c6,_=ki.Iy,F=ki.dW,C=vi.WZ,T=vi.vp,S=bi,L=fi,$=ni,E=ma.dI,x=za,D=fa.aQ,I=l.S2,A=ua.ZO,P=ua.lX,U=ha,R=ia,W=Ut.ll,O=zt.qi,N=r.kZ,M=Bt,V=ht,j=q,K=X,Z=B;return(0,c.uX)(),(0,c.CE)("div",en,[(0,c.bF)(P,null,{default:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",tn,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",an,[(0,c.Lk)("div",nn,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,z.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",sn,[(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.Lk)("span",rn,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(p,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom","show-after":1e3},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(A,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",on,[(0,c.bF)(b,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",{class:(0,h.C4)(["breadcrumb-view-toggle",{"is-list":"list"===n.viewMode}]),role:"group"},[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,ln),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,dn)],2),(0,c.bF)(F,{trigger:"click",class:"breadcrumb-sort-dropdown",onCommand:s.setSortField},{dropdown:(0,c.k6)(()=>[(0,c.bF)(_,{class:"sort-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",vn,[(0,c.bF)(k,{modelValue:n.sortOrder,"onUpdate:modelValue":t[5]||(t[5]=e=>n.sortOrder=e),size:"small",onChange:s.setSortOrder},{default:(0,c.k6)(()=>[(0,c.bF)(v,{label:"asc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortAsc")),1)]),_:1}),(0,c.bF)(v,{label:"desc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortDesc")),1)]),_:1})]),_:1},8,["modelValue","onChange"])]),(0,c.bF)(y,{class:"sort-divider"}),(0,c.bF)(w,{command:"time",class:(0,h.C4)({"is-selected":"time"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByTime")),1),"time"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"size",class:(0,h.C4)({"is-selected":"size"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortBySize")),1),"size"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"rawName",class:(0,h.C4)({"is-selected":"rawName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByRawName")),1),"rawName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"]),(0,c.bF)(w,{command:"fileName",class:(0,h.C4)({"is-selected":"fileName"===n.sortField})},{default:(0,c.k6)(()=>[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.sortByFileName")),1),"fileName"===n.sortField?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"sort-field-check"})):(0,c.Q3)("",!0)]),_:1},8,["class"])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"breadcrumb-sort-button",type:"button",title:s.sortLabel},[((0,c.uX)(),(0,c.CE)("svg",hn,["time"===n.sortField?((0,c.uX)(),(0,c.CE)("g",un,[...t[32]||(t[32]=[(0,c.Lk)("circle",{cx:"7.5",cy:"9",r:"5.5"},null,-1),(0,c.Lk)("path",{d:"M7.5 5.5V9L10 10.5"},null,-1)])])):"size"===n.sortField?((0,c.uX)(),(0,c.CE)("g",fn,[...t[33]||(t[33]=[(0,c.Lk)("path",{d:"M2 4H13M2 9H10M2 14H7"},null,-1)])])):"rawName"===n.sortField?((0,c.uX)(),(0,c.CE)("g",mn,[...t[34]||(t[34]=[(0,c.Lk)("path",{d:"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5"},null,-1)])])):((0,c.uX)(),(0,c.CE)("g",pn,[...t[35]||(t[35]=[(0,c.Lk)("path",{d:"M2.5 14L7.5 3L12.5 14M4.3 10H10.7"},null,-1)])])),"asc"===n.sortOrder?((0,c.uX)(),(0,c.CE)("path",gn)):((0,c.uX)(),(0,c.CE)("path",bn))]))],8,cn)]),_:1},8,["onCommand"]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[6]||(t[6]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",kn,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",yn,[(0,c.bF)(T,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(C,{onClick:t[7]||(t[7]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(C,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,wn)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[9]||(t[9]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[10]||(t[10]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",_n,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Fn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Cn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(L,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)($,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[13]||(t[13]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[14]||(t[14]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Tn,[(0,c.Lk)("div",Sn,[(0,c.bF)(E,{"model-value":s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[11]||(t[11]=(0,z.D$)(()=>{},["stop"])),onChange:s.handleSelectAllPage},null,8,["model-value","indeterminate","onChange"])]),(0,c.Lk)("div",Ln,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",$n,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",En,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",xn,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Dn,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",In,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",An,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Pn,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",Bn,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(S,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",zn,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Un,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Rn,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(x,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Wn,[(0,c.Lk)("div",On,[(0,c.bF)(D,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(I,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(I,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Nn,[(0,c.Lk)("span",Mn,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Vn,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[15]||(t[15]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,z.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(I,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[36]||(t[36]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(U,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(R,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[17]||(t[17]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[18]||(t[18]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[19]||(t[19]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[20]||(t[20]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[21]||(t[21]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(N,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog settings-dialog-scope"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Xn,[(0,c.Lk)("div",jn,[(0,c.Lk)("span",Kn,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Zn,[(0,c.bF)(k,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[22]||(t[22]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(W,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(W,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[37]||(t[37]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(W,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[38]||(t[38]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(W,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[39]||(t[39]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(W,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[40]||(t[40]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(W,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Gn,[(0,c.Lk)("div",Hn,[(0,c.Lk)("span",Qn,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(p,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",qn,[(0,c.Lk)("div",Yn,[(0,c.Lk)("span",Jn,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(O,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[23]||(t[23]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",es,[(0,c.Lk)("span",ts,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[24]||(t[24]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",as,[(0,c.bF)(I,{type:"primary",onClick:t[25]||(t[25]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(M,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showTagDialog=e),fileId:n.currentTagFile,fileMetadata:s.tagFileMetadata,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","fileMetadata","onTagsUpdated"]),(0,c.bF)(V,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(j,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(K,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(Z,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[31]||(t[31]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}var ns=a(60782),ss=a(44813),rs=a.n(ss),os=a(54047),ls=a(46638);class ds{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ot.nk.warning(ls.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,D.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ot.nk.warning(ls.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,D.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const cs=new ds;var hs=a(62388),us=a(48903),fs=a(90144);function ms(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function ps(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function gs(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,fs.KR)(!1),r=(0,fs.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,fs.BA)(i);return t[e]||void 0}function v(){const e=(0,fs.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||I():u&&(P(),A())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,fs.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,fs.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=ps(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),$())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function $(){const e=b();if(!e)return;const t=(0,fs.BA)(e.containerRef);if(!t)return;const a=(0,fs.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=ms(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function E(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,fs.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=ps(o,o),S(),document.addEventListener("mousemove",x),document.addEventListener("mouseup",D)}}function x(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=ps(o,t),$();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function D(e){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function I(){u||(document.addEventListener("mousedown",E),u=!0)}function A(){u&&(document.removeEventListener("mousedown",E),u=!1)}function P(){s.value&&(T(),L(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",D))}function B(){k()}return(0,c.wB)(()=>(0,fs.BA)(i),()=>{P(),k()}),(0,c.sV)(()=>{v()&&I(),window.addEventListener("resize",B)}),(0,c.xo)(()=>{P(),L(),T(),A(),window.removeEventListener("resize",B)}),{isDragging:s,selectionRect:r}}const bs=["time","size","rawName","fileName"],vs=["asc","desc"];function ks(e,t,a){try{const i=localStorage.getItem(e);return t.includes(i)?i:a}catch{return a}}var ys={name:"AdminDashBoard",mixins:[us.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortField:ks("sortField",bs,"time"),sortOrder:ks("sortOrder",vs,"desc"),isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:Ji.A,TagManagementDialog:Bt,BatchTagDialog:ht,SkeletonLoader:bi,FileCard:ni,FolderCard:fi,FileListItem:za,FileDetailDialog:ia,BatchActionBar:ha,MobileActionSheet:q,MobileDirectoryDrawer:X,DashboardCheckbox:Ti,FilterDropdown:Yi,MoveFileDialog:B,LanguageSwitcher:os.A},setup(){const e=(0,fs.KR)(null),t=(0,fs.KR)(null),a=(0,fs.KR)("card"),i=(0,fs.KR)([]),{isDragging:n,selectionRect:s}=gs({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{tagFileMetadata(){return this.tableData.find(e=>e.name===this.currentTagFile)?.metadata||{}},...(0,ns.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortLabel(){const e={time:"dashboard.sortByTime",size:"dashboard.sortBySize",rawName:"dashboard.sortByRawName",fileName:"dashboard.sortByFileName"},t=this.$t(e[this.sortField]||e.time),a=this.$t("desc"===this.sortOrder?"dashboard.sortDesc":"dashboard.sortAsc");return`${t} · ${a}`},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.userConfig?.urlPrefix||`${document.location.origin}/file/`},isSelectAll:{get(){return this.paginatedTableData.length>0&&this.paginatedTableData.every(e=>e.selected)},set(e){this.paginatedTableData.forEach(t=>t.selected=e)}},isIndeterminate(){const e=this.paginatedTableData.filter(e=>e.selected).length;return e>0&&ee.selected&&!this.selectedFiles.includes(e))),this.selectedFiles=this.selectedFiles.filter(e=>e.selected),this.selectedFiles=this.selectedFiles.filter(t=>e.includes(t))},deep:!0},defaultUrlFormat(e){localStorage.setItem("defaultUrlFormat",e)},showdetailDialog(e){e&&(this.activeUrlTab=this.defaultUrlFormat||"originUrl")},customUrlPrefix(e){this.$store.commit("setAdminUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setAdminUrlSettings",{key:"useCustomUrl",value:e})},currentPath(e){this.tableData.forEach(e=>e.selected=!1)}},methods:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,D.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,D.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),cs.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,D.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),cs.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await cs.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},setSortField(e){bs.includes(e)&&(this.sortField=e,this.currentPage=1,localStorage.setItem("sortField",e))},setSortOrder(e){vs.includes(e)&&(this.sortOrder=e,this.currentPage=1,localStorage.setItem("sortOrder",e))},sortData(e){if(!Array.isArray(e))return[];const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder),i=e=>{const t=e=>{if(null===e||void 0===e||""===e)return null;const t=Number(e);return Number.isFinite(t)?t:null},a=t(e.metadata?.FileSizeBytes);if(null!==a)return a;const i=t(e.metadata?.FileSize);return null!==i?1024*i*1024:t(e.size)??0},n=e=>{switch(this.sortField){case"size":return i(e);case"rawName":return e.metadata?.RawName||e.name||"";case"fileName":return e.metadata?.FileName||e.name||"";case"time":default:return e.metadata?.TimeStamp?new Date(e.metadata.TimeStamp).getTime():0}},s=(e,t)=>{const a=n(e),i=n(t);let s=0;return s="string"===typeof a||"string"===typeof i?String(a||"").localeCompare(String(i||"")):a-i,"desc"===this.sortOrder?-s:s};return t.sort(s),a.sort(s),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,hs.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,D.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();cs.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,D.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();cs.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,D.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(rs()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await cs.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPage=1,this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPage=1,this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=cs.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await cs.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},handleTagsUpdated(e){this.handleBatchTagsUpdated([{fileId:this.currentTagFile,tags:e,saved:!0}])},handleBatchTagsUpdated(e){const t=new Map(e.filter(e=>e.saved).map(e=>[e.fileId,e.tags]));for(const i of this.tableData)t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});this.detailFile&&t.has(this.detailFile.name)&&(this.detailFile.metadata={...this.detailFile.metadata,Tags:t.get(this.detailFile.name)});const a=cs.getLocalFileList();for(const i of a.files||[])t.has(i.name)&&(i.metadata={...i.metadata,Tags:t.get(i.name)});cs.updateFileListCache(a)},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,D.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const ws=(0,A.A)(ys,[["render",is],["__scopeId","data-v-8a33a938"]]);var _s=ws},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=895.df959629.js.map \ No newline at end of file diff --git a/frontend-dist/js/895.df959629.js.gz b/frontend-dist/js/895.df959629.js.gz new file mode 100644 index 0000000..c7c32f8 Binary files /dev/null and b/frontend-dist/js/895.df959629.js.gz differ diff --git a/frontend-dist/js/895.df959629.js.map b/frontend-dist/js/895.df959629.js.map new file mode 100644 index 0000000..2199c0d --- /dev/null +++ b/frontend-dist/js/895.df959629.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/895.df959629.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/aiTags.js","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?2da6","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?df02","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?35ad","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue","webpack://sanyue_imghub/./src/components/dashboard/AITagPanel.vue?056e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?1226","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?62ea","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8ba4","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?7b8a","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?3a10","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?f1ae","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?cd9e","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?c47a","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?f571","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?3dd3","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?bbd3","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import fetchWithAuth from '@/utils/fetchWithAuth';\n\nexport const MAX_PREVIEW_BYTES = 256 * 1024;\nconst MAX_ORIGINAL_BYTES = 20 * 1024 * 1024;\nfunction checkAbort(signal) {\n if (signal?.aborted) throw new DOMException('Cancelled', 'AbortError');\n}\n\nexport function aiErrorText(error, translate, hasTranslation) {\n const code = error?.code || error?.message;\n const key = `aiErrors.${code}`;\n const message = hasTranslation(key)\n ? translate(key, { status: error.details?.status || error.status })\n : translate('aiErrors.NETWORK_ERROR');\n const details = ['code', 'type', 'requestId'].filter(field => error?.details?.[field])\n .map(field => `${translate(`aiErrors.${field}`)}: ${error.details[field]}`);\n return details.length ? `${message} (${details.join(', ')})` : message;\n}\n\nconst errorResult = error => ({ code: error.code || error.message, message: error.message, ...(error.details ? { details: error.details } : {}) });\n\nexport async function apiJSON(url, options = {}) {\n const response = await fetchWithAuth(url, options);\n let data;\n try { data = await response.json(); }\n catch {\n const error = new Error(`HTTP ${response.status}`);\n error.code = response.status === 401 ? 'AUTH_REQUIRED' : response.ok ? 'INVALID_RESPONSE' : 'HTTP_ERROR';\n error.details = { status: response.status };\n throw error;\n }\n if (!data || typeof data !== 'object' || Array.isArray(data)) {\n const error = new Error('INVALID_RESPONSE');\n error.code = 'INVALID_RESPONSE';\n throw error;\n }\n if (!response.ok) {\n const error = new Error(data.error?.message || data.message || `HTTP ${response.status}`);\n error.code = data.error?.code || (response.status === 401 ? 'AUTH_REQUIRED' : 'HTTP_ERROR');\n error.details = { status: response.status, ...data.error?.details };\n throw error;\n }\n return data;\n}\n\nexport async function makeImagePreview(file, signal) {\n checkAbort(signal);\n const type = file.metadata?.FileType?.toLowerCase();\n if (type && !['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif'].includes(type)) throw new Error('UNSUPPORTED_IMAGE');\n if (Number(file.metadata?.FileSizeBytes) > MAX_ORIGINAL_BYTES) throw new Error('IMAGE_TOO_LARGE');\n const path = file.name.split('/').map(encodeURIComponent).join('/');\n const response = await fetchWithAuth(`/file/${path}`, { signal });\n if (!response.ok) {\n const error = new Error(`HTTP ${response.status}`);\n error.code = 'IMAGE_FETCH_FAILED';\n error.details = { status: response.status };\n throw error;\n }\n if (Number(response.headers.get('Content-Length')) > MAX_ORIGINAL_BYTES) {\n await response.body?.cancel();\n throw new Error('IMAGE_TOO_LARGE');\n }\n const reader = response.body.getReader();\n const chunks = [];\n let size = 0;\n try {\n while (true) {\n checkAbort(signal);\n const { value, done } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > MAX_ORIGINAL_BYTES) { await reader.cancel(); throw new Error('IMAGE_TOO_LARGE'); }\n chunks.push(value);\n }\n } finally { reader.releaseLock(); }\n const blob = new Blob(chunks, { type: response.headers.get('Content-Type') || type });\n checkAbort(signal);\n let image, objectUrl;\n try {\n if (typeof createImageBitmap === 'function') image = await createImageBitmap(blob);\n else {\n objectUrl = URL.createObjectURL(blob);\n image = new Image();\n await new Promise((resolve, reject) => {\n image.onload = resolve;\n image.onerror = () => reject(new Error('UNSUPPORTED_IMAGE'));\n image.src = objectUrl;\n });\n }\n checkAbort(signal);\n const width = image.width || image.naturalWidth;\n const height = image.height || image.naturalHeight;\n if (!width || !height) throw new Error('UNSUPPORTED_IMAGE');\n const canvas = document.createElement('canvas');\n const scale = Math.min(1, 768 / Math.max(width, height));\n canvas.width = Math.max(1, Math.round(width * scale));\n canvas.height = Math.max(1, Math.round(height * scale));\n const context = canvas.getContext('2d');\n context.fillStyle = '#ffffff';\n context.fillRect(0, 0, canvas.width, canvas.height);\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n for (const quality of [0.8, 0.6, 0.4]) {\n checkAbort(signal);\n const preview = await new Promise(resolve => canvas.toBlob(resolve, 'image/jpeg', quality));\n if (preview && preview.size <= MAX_PREVIEW_BYTES && (preview.size <= 128 * 1024 || quality === 0.4)) return preview;\n }\n throw new Error('PREVIEW_TOO_LARGE');\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError' || error.message === 'PREVIEW_TOO_LARGE') throw error;\n throw new Error('UNSUPPORTED_IMAGE');\n } finally {\n image?.close?.();\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n }\n}\n\nexport async function generateTagSuggestions(files, { signal, batchSize = 3, onResult, prepare = makeImagePreview } = {}) {\n batchSize = Math.max(1, Math.min(3, batchSize));\n const results = [];\n for (let start = 0; start < files.length; start += batchSize) {\n checkAbort(signal);\n const prepared = [];\n // Limit browser memory: only retain previews for the current small batch.\n for (const file of files.slice(start, start + batchSize)) {\n try { prepared.push({ file, image: await prepare(file, signal) }); }\n catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n const result = { fileId: file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n checkAbort(signal);\n if (!prepared.length) continue;\n const form = new FormData();\n form.append('items', JSON.stringify(prepared.map(item => ({ fileId: item.file.name }))));\n prepared.forEach((item, index) => form.append(`image${index}`, item.image, 'preview.jpg'));\n try {\n const data = await apiJSON('/api/manage/ai/tags', { method: 'POST', body: form, signal });\n checkAbort(signal);\n if (!Array.isArray(data.results) || data.results.length !== prepared.length) throw new Error('INVALID_RESPONSE');\n for (let index = 0; index < prepared.length; index++) {\n const result = data.results[index];\n if (!result || result.fileId !== prepared[index].file.name || (!result.error && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string') || !/^[a-f0-9]{64}$/.test(result.sourceIdentity)))) throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n if (signal?.aborted || error.name === 'AbortError') throw error;\n for (const item of prepared) {\n const result = { fileId: item.file.name, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n\nexport async function applyTagSuggestions(items, onResult) {\n const results = [];\n for (let start = 0; start < items.length; start += 50) {\n const batch = items.slice(start, start + 50);\n try {\n const data = await apiJSON('/api/manage/tags/apply', {\n method: 'POST', headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ items: batch })\n });\n if (!Array.isArray(data.results) || data.results.length !== batch.length || data.results.some((result, index) => !result || result.fileId !== batch[index].fileId || typeof result.saved !== 'boolean' || (result.saved && (!Array.isArray(result.tags) || result.tags.some(tag => typeof tag !== 'string'))))) {\n throw new Error('INVALID_RESPONSE');\n }\n for (const result of data.results) { results.push(result); onResult?.(result); }\n } catch (error) {\n for (const item of batch) {\n const result = { fileId: item.fileId, saved: false, error: errorResult(error) };\n results.push(result); onResult?.(result);\n }\n }\n }\n return results;\n}\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"move-file-dialog-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"move-dialog-content\"\n};\nconst _hoisted_3 = {\n class: \"move-path-input-container\"\n};\nconst _hoisted_4 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_5 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_6 = {\n class: \"move-drawer-content\"\n};\nconst _hoisted_7 = {\n class: \"move-path-section\"\n};\nconst _hoisted_8 = {\n class: \"move-path-label\"\n};\nconst _hoisted_9 = {\n class: \"move-path-input-row\"\n};\nconst _hoisted_10 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"embedded-tree-section\"\n};\nconst _hoisted_12 = {\n class: \"tree-section-header\"\n};\nconst _hoisted_13 = {\n class: \"tree-section-title\"\n};\nconst _hoisted_14 = {\n class: \"tree-container\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_16 = {\n class: \"error-text\"\n};\nconst _hoisted_17 = {\n class: \"node-label\"\n};\nconst _hoisted_18 = {\n class: \"drawer-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_dialog, {\n key: 0,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=feeadb1c&scoped=true\"\nimport script from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./MobileDirectoryDrawer.vue?vue&type=script&lang=js\"\n\nimport \"./MobileDirectoryDrawer.vue?vue&type=style&index=0&id=feeadb1c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-feeadb1c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=f5c66568&scoped=true\"\nimport script from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\nexport * from \"./MobileActionSheet.vue?vue&type=script&lang=js\"\n\nimport \"./MobileActionSheet.vue?vue&type=style&index=0&id=f5c66568&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5c66568\"]])\n\nexport default __exports__","import \"core-js/modules/es.array.push.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"ai-tags\"\n};\nconst _hoisted_2 = {\n class: \"ai-toolbar\"\n};\nconst _hoisted_3 = {\n class: \"ai-heading\"\n};\nconst _hoisted_4 = {\n class: \"ai-heading-icon\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"ai-empty\"\n};\nconst _hoisted_6 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_7 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"ai-empty ai-ready\"\n};\nconst _hoisted_9 = {\n class: \"ai-empty-icon\"\n};\nconst _hoisted_10 = {\n class: \"ai-empty-title\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"ai-progress\"\n};\nconst _hoisted_12 = {\n class: \"ai-progress-label\"\n};\nconst _hoisted_13 = {\n key: 3,\n class: \"ai-results\"\n};\nconst _hoisted_14 = {\n class: \"ai-result-heading\"\n};\nconst _hoisted_15 = {\n class: \"ai-file\"\n};\nconst _hoisted_16 = {\n key: 1,\n class: \"ai-tag-list\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"ai-empty-title\"\n};\nconst _hoisted_18 = {\n key: 4,\n class: \"ai-footer\"\n};\nconst _hoisted_19 = {\n class: \"ai-selection\"\n};\nconst _hoisted_20 = {\n class: \"ai-footer-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_check_tag = _resolveComponent(\"el-check-tag\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _withDirectives((_openBlock(), _createElementBlock(\"section\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"span\", _hoisted_4, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('aiTags.tab')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('aiTags.hint'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), $data.available ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n loading: $data.generating,\n disabled: $props.disabled || $data.saving || !$props.files.length,\n onClick: _cache[0] || (_cache[0] = $event => $options.generate(false))\n }, {\n default: _withCtx(() => [!$data.generating ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"tags\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.generate')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])) : _createCommentVNode(\"\", true)]), !$data.loadingConfig && !$data.available ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n })]), _createElementVNode(\"span\", _hoisted_7, _toDisplayString($data.configError || _ctx.$t('aiTags.disabled')), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n plain: \"\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$router.push('/systemConfig#ai'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.settings')), 1)]),\n _: 1\n })])) : $data.available && !$data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('aiTags.ready')), 1)])) : _createCommentVNode(\"\", true), $data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('aiTags.progress', {\n done: $data.completed,\n total: $data.workTotal\n })), 1), _createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.cancel\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('aiTags.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createVNode(_component_el_progress, {\n percentage: $data.workTotal ? Math.round($data.completed / $data.workTotal * 100) : 0,\n \"show-text\": false,\n \"stroke-width\": 6\n }, null, 8, [\"percentage\"])])) : _createCommentVNode(\"\", true), $data.rows.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.rows, row => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: row.fileId,\n class: \"ai-result\"\n }, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"ai-file-icon\"\n }), _createElementVNode(\"span\", _hoisted_15, _toDisplayString($options.fileName(row.fileId)), 1), row.applied ? (_openBlock(), _createBlock(_component_el_tag, {\n key: 0,\n size: \"small\",\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"check\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.saved')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), row.error ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: $options.errorText(row.error),\n type: \"error\",\n \"show-icon\": \"\",\n closable: false\n }, null, 8, [\"title\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [row.applied ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList(row.selected, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n type: \"success\",\n effect: \"light\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(row.tags, tag => {\n return _openBlock(), _createBlock(_component_el_check_tag, {\n key: tag,\n checked: row.selected.includes(tag),\n \"aria-disabled\": $props.disabled || $data.saving || $data.generating,\n onChange: $event => $options.toggleTag(row, tag)\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"checked\", \"aria-disabled\", \"onChange\"]);\n }), 128)), !row.tags.length ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_ctx.$t('aiTags.noTags')), 1)) : _createCommentVNode(\"\", true)], 64))])), row.saveError ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 2,\n title: row.saveError,\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"ai-save-error\"\n }, null, 8, [\"title\"])) : _createCommentVNode(\"\", true)]);\n }), 128))])) : _createCommentVNode(\"\", true), $data.rows.length && !$data.generating ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('aiTags.selection', {\n count: $options.selectedCount\n })), 1), _createElementVNode(\"div\", _hoisted_20, [$options.retryFiles.length ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n disabled: $props.disabled || $data.saving,\n onClick: _cache[2] || (_cache[2] = $event => $options.generate(true))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.saving,\n disabled: $props.disabled || !$options.pending.length,\n onClick: $options.apply\n }, {\n default: _withCtx(() => [!$data.saving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('aiTags.apply')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])])])) : _createCommentVNode(\"\", true)])), [[_directive_loading, $data.loadingConfig]]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport { apiJSON, aiErrorText, generateTagSuggestions, applyTagSuggestions } from '@/utils/aiTags';\nexport default {\n name: 'AITagPanel',\n props: {\n files: {\n type: Array,\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: ['applied', 'busy'],\n data() {\n return {\n available: false,\n configError: '',\n loadingConfig: true,\n batchSize: 3,\n generating: false,\n saving: false,\n rows: [],\n completed: 0,\n workTotal: 0\n };\n },\n computed: {\n fileSignature() {\n return JSON.stringify(this.files.map(file => file.name));\n },\n selectedCount() {\n return this.pending.reduce((count, row) => count + row.selected.length, 0);\n },\n retryFiles() {\n return this.files.filter(file => this.rows.some(row => row.fileId === file.name && row.error));\n },\n pending() {\n return this.rows.filter(row => !row.error && !row.applied && row.selected.length);\n }\n },\n watch: {\n fileSignature() {\n this.cancel();\n this.rows = [];\n }\n },\n async mounted() {\n try {\n const config = await apiJSON('/api/manage/ai/tags');\n this.available = config.enabled;\n this.batchSize = config.maxBatchSize;\n } catch (error) {\n this.configError = this.errorText(error);\n } finally {\n this.loadingConfig = false;\n }\n },\n beforeUnmount() {\n this.cancel();\n },\n methods: {\n fileName(id) {\n return this.files.find(file => file.name === id)?.metadata?.FileName || id;\n },\n errorText(error) {\n return aiErrorText(error, this.$t, this.$te);\n },\n toggleTag(row, tag) {\n if (this.disabled || this.saving || this.generating) return;\n row.selected = row.selected.includes(tag) ? row.selected.filter(item => item !== tag) : [...row.selected, tag];\n },\n cancel() {\n this.controller?.abort();\n },\n async generate(retry) {\n if (this.disabled || this.generating || this.saving) return;\n const files = retry ? this.retryFiles : [...this.files];\n const signature = this.fileSignature;\n if (!retry) this.rows = [];\n const controller = new AbortController();\n this.controller = controller;\n this.generating = true;\n this.completed = 0;\n this.workTotal = files.length;\n this.$emit('busy', true);\n try {\n await generateTagSuggestions(files, {\n signal: controller.signal,\n batchSize: this.batchSize,\n onResult: result => {\n if (controller.signal.aborted || signature !== this.fileSignature) return;\n const row = {\n ...result,\n selected: [...(result.tags || [])],\n applied: false,\n saveError: ''\n };\n const index = this.rows.findIndex(item => item.fileId === result.fileId);\n if (index === -1) this.rows.push(row);else this.rows.splice(index, 1, row);\n this.completed++;\n }\n });\n } catch (error) {\n if (signature !== this.fileSignature) return;\n if (error.name === 'AbortError') {\n for (const file of files) {\n if (!this.rows.some(row => row.fileId === file.name && !row.error)) {\n const index = this.rows.findIndex(row => row.fileId === file.name);\n const row = {\n fileId: file.name,\n error: {\n message: 'CANCELLED'\n },\n selected: [],\n applied: false\n };\n if (index === -1) this.rows.push(row);else if (this.rows[index].error?.message === 'CANCELLED') this.rows.splice(index, 1, row);\n }\n }\n }\n if (error.name !== 'AbortError') this.$message.error(this.errorText(error));\n } finally {\n this.generating = false;\n this.$emit('busy', false);\n }\n },\n async apply() {\n if (this.disabled || this.saving || this.generating) return;\n this.saving = true;\n this.$emit('busy', true);\n try {\n await applyTagSuggestions(this.pending.map(row => ({\n fileId: row.fileId,\n tags: row.selected,\n sourceIdentity: row.sourceIdentity,\n repairIndex: !!row.indexPending\n })), result => {\n const row = this.rows.find(item => item.fileId === result.fileId);\n if (!row) return;\n row.indexPending = !!result.indexPending;\n row.applied = result.saved && !result.indexPending;\n row.saveError = result.indexPending ? this.$t('aiTags.indexPending') : result.error ? this.errorText(result.error) : '';\n if (result.saved) this.$emit('applied', [result]);\n });\n } catch (error) {\n this.$message.error(this.errorText(error));\n } finally {\n this.saving = false;\n this.$emit('busy', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AITagPanel.vue?vue&type=template&id=954f5f34&scoped=true\"\nimport script from \"./AITagPanel.vue?vue&type=script&lang=js\"\nexport * from \"./AITagPanel.vue?vue&type=script&lang=js\"\n\nimport \"./AITagPanel.vue?vue&type=style&index=0&id=954f5f34&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-954f5f34\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-dialog-content batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tag-file-summary\"\n};\nconst _hoisted_3 = {\n class: \"tag-tab-label\"\n};\nconst _hoisted_4 = {\n class: \"tag-section\"\n};\nconst _hoisted_5 = {\n class: \"tag-section-header\"\n};\nconst _hoisted_6 = {\n class: \"tag-section-icon\"\n};\nconst _hoisted_7 = {\n class: \"tag-section-actions\"\n};\nconst _hoisted_8 = {\n class: \"tag-count\"\n};\nconst _hoisted_9 = [\"aria-label\"];\nconst _hoisted_10 = {\n class: \"input-section\"\n};\nconst _hoisted_11 = {\n class: \"tag-input-row\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_13 = [\"disabled\", \"onClick\"];\nconst _hoisted_14 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"action-buttons\"\n};\nconst _hoisted_17 = {\n class: \"tag-tab-label\"\n};\nconst _hoisted_18 = {\n class: \"tag-section\"\n};\nconst _hoisted_19 = {\n class: \"tag-section-header\"\n};\nconst _hoisted_20 = {\n class: \"tag-section-icon muted\"\n};\nconst _hoisted_21 = {\n class: \"tag-section-actions\"\n};\nconst _hoisted_22 = {\n class: \"tag-count\"\n};\nconst _hoisted_23 = [\"aria-label\"];\nconst _hoisted_24 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_25 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_26 = {\n class: \"tag-tab-label\"\n};\nconst _hoisted_27 = {\n class: \"tag-section tag-danger-section\"\n};\nconst _hoisted_28 = {\n class: \"tag-section-header\"\n};\nconst _hoisted_29 = {\n class: \"tag-section-icon danger\"\n};\nconst _hoisted_30 = {\n class: \"action-buttons\"\n};\nconst _hoisted_31 = {\n class: \"tag-tab-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_font_awesome_icon, {\n icon: \"images\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.selectedFiles', {\n count: $options.fileCount\n })), 1)]), $data.pendingIndexIds.length ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.activeTab = $event),\n class: \"tag-operation-tabs\",\n \"before-leave\": $options.beforeTabChange\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n name: \"add\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.addTab')), 1)])]),\n default: _withCtx(() => [_createElementVNode(\"section\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.tagsToAdd.length), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n }),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: \"tag-help-button\",\n \"aria-label\": _ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n })], 8, _hoisted_9)]),\n _: 1\n }, 8, [\"content\"])])]), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.loading || $data.aiBusy,\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n prefix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), _createVNode(_component_el_button, {\n class: \"tag-add-button\",\n type: \"primary\",\n disabled: $data.loading || $data.aiBusy || !$data.inputTag.trim(),\n \"aria-label\": _ctx.$t('batchTag.addTab'),\n onClick: $options.handleAddInputTag\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"disabled\", \"aria-label\", \"onClick\"])]), $data.showSuggestions && $data.suggestions.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"button\", {\n key: tag,\n type: \"button\",\n class: \"suggestion-item\",\n disabled: $data.loading || $data.aiBusy,\n onClick: $event => $options.selectSuggestion(tag)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(tag), 1)], 8, _hoisted_13);\n }), 128))])) : _createCommentVNode(\"\", true)]), $data.tagsToAdd.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-chip\",\n round: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1)])), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: !$data.tagsToAdd.length || !$options.fileCount\n }, {\n default: _withCtx(() => [!$data.loading ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"plus\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n name: \"remove\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_17, [_createVNode(_component_font_awesome_icon, {\n icon: \"minus\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.removeTab')), 1)])]),\n default: _withCtx(() => [_createElementVNode(\"section\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, _toDisplayString($data.commonTags.length), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('batchTag.removeDescription'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: \"tag-help-button\",\n \"aria-label\": _ctx.$t('batchTag.removeDescription')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n })], 8, _hoisted_23)]),\n _: 1\n }, 8, [\"content\"])])]), $data.commonTags.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_24, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.loading && !$data.aiBusy,\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-chip\",\n type: \"warning\",\n round: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1)]))])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n name: \"clear\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_26, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('batchTag.clearTab')), 1)])]),\n default: _withCtx(() => [_createElementVNode(\"section\", _hoisted_27, [_createElementVNode(\"div\", _hoisted_28, [_createElementVNode(\"span\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.clearTab')), 1)]), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningDesc'),\n type: \"warning\",\n closable: false,\n \"show-icon\": \"\"\n }, null, 8, [\"title\"]), _createElementVNode(\"div\", _hoisted_30, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading,\n disabled: !$options.fileCount\n }, {\n default: _withCtx(() => [!$data.loading ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"trash-alt\"\n })) : _createCommentVNode(\"\", true), _createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n name: \"ai\",\n lazy: \"\"\n }, {\n label: _withCtx(() => [_createElementVNode(\"span\", _hoisted_31, [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('aiTags.tab')), 1)])]),\n default: _withCtx(() => [$options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 0,\n files: $options.selectedFilesOnly,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"before-leave\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nexport default {\n name: 'BatchTagDialog',\n components: {\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n pendingIndexIds: [],\n aiBusy: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(600px, 90vw)';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n beforeTabChange() {\n return !this.aiBusy && !this.loading;\n },\n handleAIResults(results) {\n this.updateSavedTags(results);\n },\n updateSavedTags(results) {\n const pending = new Set(this.pendingIndexIds);\n for (const result of results) {\n if (result.saved) {\n if (result.indexPending) pending.add(result.fileId);else pending.delete(result.fileId);\n }\n }\n this.pendingIndexIds = [...pending];\n this.$emit('tagsUpdated', results);\n this.loadCommonTags(results);\n },\n finishTagOperation(data, successKey) {\n this.updateSavedTags(data.results);\n if (data.success) ElMessage.success(this.$t(successKey, {\n count: data.updated\n }));else ElMessage.warning(this.$t('batchTag.partialSave', {\n saved: data.results.filter(result => result.saved && !result.indexPending).length,\n total: data.results.length\n }));\n return data.success;\n },\n async repairIndex() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.pendingIndexIds,\n tags: [],\n action: 'add',\n repairIndexIds: this.pendingIndexIds\n })\n });\n if (!response.ok) throw new Error();\n this.finishTagOperation(await response.json(), 'batchTag.addSuccess');\n } catch {\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n this.pendingIndexIds = [];\n },\n loadCommonTags(results = []) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n const allTags = this.selectedFilesOnly.map(file => updates.get(file.name) || file.metadata?.Tags || []);\n this.commonTags = allTags.length ? allTags[0].filter(tag => allTags.every(tags => tags.includes(tag))) : [];\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n if (this.loading || this.aiBusy) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n if (this.loading || this.aiBusy) return;\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.loading || this.aiBusy) return;\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (this.finishTagOperation(data, 'batchTag.addSuccess')) this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.removeSuccess');\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n if (this.loading || this.aiBusy) return;\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n if (this.loading || this.aiBusy) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n repairIndexIds: this.pendingIndexIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.finishTagOperation(data, 'batchTag.clearSuccess');\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=3cead2c5&scoped=true\"\nimport script from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BatchTagDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/tag-dialog.css?vue&type=style&index=0&id=3cead2c5&scoped=true&lang=css&external\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3cead2c5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withKeys as _withKeys, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-dialog-content tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"tag-section\"\n};\nconst _hoisted_3 = {\n class: \"tag-section-header\"\n};\nconst _hoisted_4 = {\n class: \"tag-section-icon\"\n};\nconst _hoisted_5 = {\n class: \"tag-count\"\n};\nconst _hoisted_6 = {\n class: \"input-section\"\n};\nconst _hoisted_7 = {\n class: \"tag-input-row\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_9 = [\"disabled\", \"onClick\"];\nconst _hoisted_10 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_11 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"tag-section\"\n};\nconst _hoisted_13 = {\n class: \"tag-section-header\"\n};\nconst _hoisted_14 = {\n class: \"tag-section-icon muted\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_16 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_17 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_18 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_AITagPanel = _resolveComponent(\"AITagPanel\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"before-close\": $options.beforeClose,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n disabled: $data.aiBusy || $data.loading,\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"disabled\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"section\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"span\", _hoisted_4, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), _createElementVNode(\"span\", _hoisted_5, _toDisplayString($data.currentTags.length), 1)]), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n disabled: $data.aiBusy || $data.loading,\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n prefix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\"\n })]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\", \"placeholder\", \"onKeyup\", \"onInput\"]), _createVNode(_component_el_button, {\n class: \"tag-add-button\",\n type: \"primary\",\n disabled: $data.aiBusy || $data.loading || !$data.inputTag.trim(),\n \"aria-label\": _ctx.$t('batchTag.addTab'),\n onClick: $options.handleAddTag\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"disabled\", \"aria-label\", \"onClick\"])]), $data.showSuggestions && $data.suggestions.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"button\", {\n key: tag,\n type: \"button\",\n class: \"suggestion-item\",\n disabled: $data.aiBusy || $data.loading,\n onClick: $event => $options.selectSuggestion(tag)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(tag), 1)], 8, _hoisted_9);\n }), 128))])) : _createCommentVNode(\"\", true)]), $data.currentTags.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: !$data.aiBusy && !$data.loading,\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-chip\",\n round: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"closable\", \"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1)]))]), _createElementVNode(\"section\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\"\n })]), _createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1)]), $data.popularTags.length ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n type: \"info\",\n round: \"\",\n class: \"tag-chip tag-choice\",\n role: \"button\",\n tabindex: $data.aiBusy || $data.loading ? -1 : 0,\n \"aria-disabled\": $data.aiBusy || $data.loading,\n onClick: $event => $options.handleAddPopularTag(tag),\n onKeydown: [_withKeys(_withModifiers($event => $options.handleAddPopularTag(tag), [\"prevent\"]), [\"enter\"]), _withKeys(_withModifiers($event => $options.handleAddPopularTag(tag), [\"prevent\"]), [\"space\"])]\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"tabindex\", \"aria-disabled\", \"onClick\", \"onKeydown\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1)]))]), $data.indexPending ? (_openBlock(), _createBlock(_component_el_alert, {\n key: 0,\n title: _ctx.$t('tagManagement.indexPending'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n size: \"small\",\n loading: $data.loading,\n disabled: $data.aiBusy,\n onClick: $options.repairIndex\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('aiTags.retry')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\", \"onClick\"])]),\n _: 1\n }, 8, [\"title\"])) : _createCommentVNode(\"\", true), $options.visible ? (_openBlock(), _createBlock(_component_AITagPanel, {\n key: 1,\n class: \"single-ai-panel\",\n files: $options.aiFiles,\n disabled: $data.loading,\n onBusy: _cache[1] || (_cache[1] = $event => $data.aiBusy = $event),\n onApplied: $options.handleAIResults\n }, null, 8, [\"files\", \"disabled\", \"onApplied\"])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"before-close\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport AITagPanel from './AITagPanel.vue';\nimport { apiJSON, aiErrorText } from '@/utils/aiTags';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading,\n AITagPanel\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n },\n fileMetadata: {\n type: Object,\n default: () => ({})\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n indexPending: false,\n aiBusy: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n aiFiles() {\n return this.fileId ? [{\n name: this.fileId,\n metadata: this.fileMetadata\n }] : [];\n },\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return 'min(500px, 90vw)';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n beforeUnmount() {\n clearTimeout(this.debounceTimer);\n },\n methods: {\n beforeClose(done) {\n if (!this.aiBusy && !this.loading) done();\n },\n handleAIResults(results) {\n const result = results.find(item => item.fileId === this.fileId);\n if (result) {\n this.currentTags = result.tags;\n this.$emit('tagsUpdated', result.tags);\n }\n },\n async repairIndex() {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const data = await apiJSON(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [],\n repairIndex: true\n })\n });\n this.currentTags = data.tags;\n this.indexPending = !!data.indexPending;\n this.$emit('tagsUpdated', this.currentTags);\n } catch (error) {\n ElMessage.error(aiErrorText(error, this.$t, this.$te));\n } finally {\n this.loading = false;\n }\n },\n async loadFileTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n } finally {\n this.loading = false;\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n if (this.aiBusy || this.loading) return;\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n this.inputTag = '';\n this.showSuggestions = false;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n ElMessage.error(aiErrorText(error.error || {\n code: 'INTERNAL_ERROR'\n }, this.$t, this.$te));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(this.$t('tagManagement.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.loading = true;\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n repairIndex: this.indexPending,\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.indexPending = !!data.indexPending;\n if (!data.indexPending) ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleAddPopularTag(tag) {\n if (this.aiBusy || this.loading) return;\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n if (this.aiBusy || this.loading) return;\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.indexPending = false;\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=828386e4&scoped=true\"\nimport script from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\nexport * from \"./TagManagementDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/tag-dialog.css?vue&type=style&index=0&id=828386e4&scoped=true&lang=css&external\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-828386e4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"var(--el-text-color-secondary)\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=550287cc&scoped=true\"\nimport script from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\nexport * from \"./FileDetailDialog.vue?vue&type=script&lang=js\"\n\nimport \"./FileDetailDialog.vue?vue&type=style&index=0&id=550287cc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-550287cc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=49301bcc&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=49301bcc&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-49301bcc\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"list-item\",\n onTouchstart: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[12] || (_cache[12] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onClick: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectChange\n }, null, 8, [\"modelValue\", \"onChange\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [$options.isFolder ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"list-folder-icon\"\n })) : $options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: $props.fileLink,\n class: \"list-preview-img\",\n muted: \"\",\n preload: \"metadata\"\n }, null, 8, _hoisted_2)) : $options.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 2,\n src: $props.fileLink,\n class: \"list-preview-img\",\n loading: \"lazy\",\n decoding: \"async\"\n }, null, 8, _hoisted_3)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"list-file-icon\"\n }))]), _createElementVNode(\"div\", {\n class: \"list-col list-col-name\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[8] || (_cache[8] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FileListItem',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n handleSelectChange(value) {\n this.localSelected = value;\n this.$emit('update:selected', value);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=25a3242c&scoped=true\"\nimport script from \"./FileListItem.vue?vue&type=script&lang=js\"\nexport * from \"./FileListItem.vue?vue&type=script&lang=js\"\n\nimport \"./FileListItem.vue?vue&type=style&index=0&id=25a3242c&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-25a3242c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=956fb02e&scoped=true\"\nimport script from \"./FileCard.vue?vue&type=script&lang=js\"\nexport * from \"./FileCard.vue?vue&type=script&lang=js\"\n\nimport \"./FileCard.vue?vue&type=style&index=0&id=956fb02e&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-956fb02e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=534cf01b&scoped=true\"\nimport script from \"./FolderCard.vue?vue&type=script&lang=js\"\nexport * from \"./FolderCard.vue?vue&type=script&lang=js\"\n\nimport \"./FolderCard.vue?vue&type=style&index=0&id=534cf01b&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-534cf01b\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.markIcon,\n class: \"dashboard-checkbox-mark\"\n }, null, 8, [\"icon\"])], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'breadcrumb',\n validator: value => ['breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n },\n markIcon() {\n return this.indeterminate && !this.checked ? 'minus' : 'check';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=3757bfa7&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=3757bfa7&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3757bfa7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=42919522&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=42919522&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-42919522\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createBlock as _createBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content admin-header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_8 = [\"title\", \"aria-pressed\"];\nconst _hoisted_9 = [\"title\", \"aria-pressed\"];\nconst _hoisted_10 = [\"title\"];\nconst _hoisted_11 = {\n class: \"breadcrumb-sort-icon\",\n viewBox: \"0 0 30 18\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_14 = {\n key: 2,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_15 = {\n key: 3,\n class: \"sort-field-glyph\"\n};\nconst _hoisted_16 = {\n key: 4,\n class: \"sort-order-glyph\",\n d: \"M23 13.5V4.5M19 8.5L23 4.5L27 8.5\"\n};\nconst _hoisted_17 = {\n key: 5,\n class: \"sort-order-glyph\",\n d: \"M23 4.5V13.5M19 9.5L23 13.5L27 9.5\"\n};\nconst _hoisted_18 = {\n class: \"sort-order-wrapper\"\n};\nconst _hoisted_19 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_20 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_21 = [\"title\"];\nconst _hoisted_22 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_23 = {\n class: \"empty-text\"\n};\nconst _hoisted_24 = {\n class: \"empty-hint\"\n};\nconst _hoisted_25 = {\n class: \"list-header\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_29 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_30 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_31 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_32 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_33 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_34 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_35 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_36 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_37 = {\n class: \"empty-text\"\n};\nconst _hoisted_38 = {\n class: \"empty-hint\"\n};\nconst _hoisted_39 = {\n class: \"pagination-container\"\n};\nconst _hoisted_40 = {\n class: \"pagination-center\"\n};\nconst _hoisted_41 = {\n class: \"pagination-right\"\n};\nconst _hoisted_42 = {\n class: \"page-total\"\n};\nconst _hoisted_43 = {\n class: \"page-jump\"\n};\nconst _hoisted_44 = {\n class: \"dialog-section\"\n};\nconst _hoisted_45 = {\n class: \"section-header\"\n};\nconst _hoisted_46 = {\n class: \"section-title\"\n};\nconst _hoisted_47 = {\n class: \"section-content\"\n};\nconst _hoisted_48 = {\n class: \"dialog-section\"\n};\nconst _hoisted_49 = {\n class: \"section-header\"\n};\nconst _hoisted_50 = {\n class: \"section-title\"\n};\nconst _hoisted_51 = {\n class: \"section-content\"\n};\nconst _hoisted_52 = {\n class: \"setting-item\"\n};\nconst _hoisted_53 = {\n class: \"setting-label\"\n};\nconst _hoisted_54 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_55 = {\n class: \"setting-label\"\n};\nconst _hoisted_56 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_divider = _resolveComponent(\"el-divider\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"breadcrumb-view-toggle\", {\n 'is-list': $data.viewMode === 'list'\n }]),\n role: \"group\"\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_9)], 2), _createVNode(_component_el_dropdown, {\n trigger: \"click\",\n class: \"breadcrumb-sort-dropdown\",\n onCommand: $options.setSortField\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"sort-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_radio_group, {\n modelValue: $data.sortOrder,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.sortOrder = $event),\n size: \"small\",\n onChange: $options.setSortOrder\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"asc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortAsc')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"desc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortDesc')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])]), _createVNode(_component_el_divider, {\n class: \"sort-divider\"\n }), _createVNode(_component_el_dropdown_item, {\n command: \"time\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'time'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByTime')), 1), $data.sortField === 'time' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"size\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'size'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortBySize')), 1), $data.sortField === 'size' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"rawName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'rawName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByRawName')), 1), $data.sortField === 'rawName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"]), _createVNode(_component_el_dropdown_item, {\n command: \"fileName\",\n class: _normalizeClass({\n 'is-selected': $data.sortField === 'fileName'\n })\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.sortByFileName')), 1), $data.sortField === 'fileName' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"sort-field-check\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"breadcrumb-sort-button\",\n type: \"button\",\n title: $options.sortLabel\n }, [(_openBlock(), _createElementBlock(\"svg\", _hoisted_11, [$data.sortField === 'time' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_12, [...(_cache[32] || (_cache[32] = [_createElementVNode(\"circle\", {\n cx: \"7.5\",\n cy: \"9\",\n r: \"5.5\"\n }, null, -1), _createElementVNode(\"path\", {\n d: \"M7.5 5.5V9L10 10.5\"\n }, null, -1)]))])) : $data.sortField === 'size' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_13, [...(_cache[33] || (_cache[33] = [_createElementVNode(\"path\", {\n d: \"M2 4H13M2 9H10M2 14H7\"\n }, null, -1)]))])) : $data.sortField === 'rawName' ? (_openBlock(), _createElementBlock(\"g\", _hoisted_14, [...(_cache[34] || (_cache[34] = [_createElementVNode(\"path\", {\n d: \"M5.5 3L4 15M11 3L9.5 15M2.5 7H13M2 11H12.5\"\n }, null, -1)]))])) : (_openBlock(), _createElementBlock(\"g\", _hoisted_15, [...(_cache[35] || (_cache[35] = [_createElementVNode(\"path\", {\n d: \"M2.5 14L7.5 3L12.5 14M4.3 10H10.7\"\n }, null, -1)]))])), $data.sortOrder === 'asc' ? (_openBlock(), _createElementBlock(\"path\", _hoisted_16)) : (_openBlock(), _createElementBlock(\"path\", _hoisted_17))]))], 8, _hoisted_10)]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_19, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[7] || (_cache[7] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_21)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[9] || (_cache[9] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[10] || (_cache[10] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_23, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_24, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[13] || (_cache[13] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[14] || (_cache[14] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_checkbox, {\n \"model-value\": $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[11] || (_cache[11] = _withModifiers(() => {}, [\"stop\"])),\n onChange: $options.handleSelectAllPage\n }, null, 8, [\"model-value\", \"indeterminate\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_29, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_33, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_34, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_36, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_37, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_38, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"span\", _hoisted_42, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_43, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.jumpPage = $event),\n size: \"small\",\n class: \"jump-input\",\n onKeyup: _withKeys($options.handleJumpPage, [\"enter\"])\n }, null, 8, [\"modelValue\", \"onKeyup\"]), _createVNode(_component_el_button, {\n size: \"small\",\n type: \"primary\",\n onClick: $options.handleJumpPage,\n class: \"jump-btn\"\n }, {\n default: _withCtx(() => [...(_cache[36] || (_cache[36] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[17] || (_cache[17] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[18] || (_cache[18] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[19] || (_cache[19] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[20] || (_cache[20] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[21] || (_cache[21] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog settings-dialog-scope\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_47, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[37] || (_cache[37] = _createElementVNode(\"span\", null, \"Markdown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"htmlUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[38] || (_cache[38] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"bbUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[39] || (_cache[39] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"tgId\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"radio-icon\"\n }), _cache[40] || (_cache[40] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_48, [_createElementVNode(\"div\", _hoisted_49, [_createElementVNode(\"span\", _hoisted_50, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_51, [_createElementVNode(\"div\", _hoisted_52, [_createElementVNode(\"span\", _hoisted_53, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_54, [_createElementVNode(\"span\", _hoisted_55, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_56, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[25] || (_cache[25] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[27] || (_cache[27] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n fileMetadata: $options.tagFileMetadata,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"fileMetadata\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[28] || (_cache[28] = $event => $data.showBatchTagDialog = $event),\n selectedFiles: $data.selectedFiles,\n onTagsUpdated: $options.handleBatchTagsUpdated\n }, null, 8, [\"modelValue\", \"selectedFiles\", \"onTagsUpdated\"]), _createVNode(_component_MobileActionSheet, {\n modelValue: $data.showMobileActionModal,\n \"onUpdate:modelValue\": _cache[29] || (_cache[29] = $event => $data.showMobileActionModal = $event),\n title: $data.mobileActionIsFolder ? $options.getFolderName($data.mobileActionFile?.name || '') : $data.mobileActionFile?.metadata?.FileName || $options.getFileName($data.mobileActionFile?.name || ''),\n isFolder: $data.mobileActionIsFolder,\n onAction: $options.handleMobileAction\n }, null, 8, [\"modelValue\", \"title\", \"isFolder\", \"onAction\"]), _createVNode(_component_MobileDirectoryDrawer, {\n modelValue: $data.showMobileDirectoryDrawer,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[31] || (_cache[31] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nconst SORT_FIELDS = ['time', 'size', 'rawName', 'fileName'];\nconst SORT_ORDERS = ['asc', 'desc'];\nfunction getStoredSortValue(key, validValues, fallback) {\n try {\n const value = localStorage.getItem(key);\n return validValues.includes(value) ? value : fallback;\n } catch {\n return fallback;\n }\n}\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortField: getStoredSortValue('sortField', SORT_FIELDS, 'time'),\n sortOrder: getStoredSortValue('sortOrder', SORT_ORDERS, 'desc'),\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n tagFileMetadata() {\n return this.tableData.find(file => file.name === this.currentTagFile)?.metadata || {};\n },\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortLabel() {\n const labelKeys = {\n time: 'dashboard.sortByTime',\n size: 'dashboard.sortBySize',\n rawName: 'dashboard.sortByRawName',\n fileName: 'dashboard.sortByFileName'\n };\n const fieldLabel = this.$t(labelKeys[this.sortField] || labelKeys.time);\n const orderLabel = this.$t(this.sortOrder === 'desc' ? 'dashboard.sortDesc' : 'dashboard.sortAsc');\n return `${fieldLabel} · ${orderLabel}`;\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n setSortField(field) {\n if (!SORT_FIELDS.includes(field)) return;\n this.sortField = field;\n this.currentPage = 1;\n localStorage.setItem('sortField', field);\n },\n setSortOrder(order) {\n if (!SORT_ORDERS.includes(order)) return;\n this.sortOrder = order;\n this.currentPage = 1;\n localStorage.setItem('sortOrder', order);\n },\n sortData(data) {\n if (!Array.isArray(data)) return [];\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n const getSizeInBytes = item => {\n const parseSize = value => {\n if (value === null || value === undefined || value === '') return null;\n const parsedValue = Number(value);\n return Number.isFinite(parsedValue) ? parsedValue : null;\n };\n const sizeInBytes = parseSize(item.metadata?.FileSizeBytes);\n if (sizeInBytes !== null) return sizeInBytes;\n const sizeInMegabytes = parseSize(item.metadata?.FileSize);\n if (sizeInMegabytes !== null) return sizeInMegabytes * 1024 * 1024;\n return parseSize(item.size) ?? 0;\n };\n const getValue = item => {\n switch (this.sortField) {\n case 'size':\n return getSizeInBytes(item);\n case 'rawName':\n return item.metadata?.RawName || item.name || '';\n case 'fileName':\n return item.metadata?.FileName || item.name || '';\n case 'time':\n default:\n return item.metadata?.TimeStamp ? new Date(item.metadata.TimeStamp).getTime() : 0;\n }\n };\n const compare = (a, b) => {\n const valA = getValue(a);\n const valB = getValue(b);\n let result = 0;\n if (typeof valA === 'string' || typeof valB === 'string') {\n result = String(valA || '').localeCompare(String(valB || ''));\n } else {\n result = valA - valB;\n }\n return this.sortOrder === 'desc' ? -result : result;\n };\n folders.sort(compare);\n files.sort(compare);\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n this.currentPage = 1;\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n this.currentPage = 1;\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n handleTagsUpdated(tags) {\n this.handleBatchTagsUpdated([{\n fileId: this.currentTagFile,\n tags,\n saved: true\n }]);\n },\n handleBatchTagsUpdated(results) {\n const updates = new Map(results.filter(result => result.saved).map(result => [result.fileId, result.tags]));\n for (const file of this.tableData) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n if (this.detailFile && updates.has(this.detailFile.name)) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n Tags: updates.get(this.detailFile.name)\n };\n }\n const cached = fileManager.getLocalFileList();\n for (const file of cached.files || []) {\n if (updates.has(file.name)) file.metadata = {\n ...file.metadata,\n Tags: updates.get(file.name)\n };\n }\n fileManager.updateFileListCache(cached);\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=8a33a938&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"@/styles/admin-common.css?vue&type=style&index=1&id=8a33a938&scoped=true&lang=css&external\"\nimport \"./AdminDashBoard.vue?vue&type=style&index=2&id=8a33a938&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8a33a938\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","validateFolderPath","strict","trim","valid","i18n","dotPattern","invalidChars","MAX_PREVIEW_BYTES","MAX_ORIGINAL_BYTES","checkAbort","signal","aborted","DOMException","aiErrorText","translate","hasTranslation","message","details","field","map","errorResult","apiJSON","url","isArray","makeImagePreview","metadata","FileType","Number","FileSizeBytes","encodeURIComponent","headers","body","cancel","getReader","read","releaseLock","image","objectUrl","createImageBitmap","URL","createObjectURL","Image","src","naturalWidth","height","naturalHeight","canvas","scale","round","context","getContext","fillStyle","fillRect","drawImage","quality","preview","toBlob","close","revokeObjectURL","generateTagSuggestions","batchSize","onResult","prepare","results","start","prepared","fileId","form","FormData","JSON","stringify","item","tags","some","tag","sourceIdentity","applyTagSuggestions","items","batch","saved","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_hoisted_19","_hoisted_20","_component_el_tooltip","_component_el_progress","_component_el_tag","_component_el_alert","_component_el_check_tag","content","available","generating","disabled","saving","loadingConfig","rows","configError","plain","$router","completed","workTotal","percentage","row","applied","effect","errorText","closable","selected","checked","onChange","toggleTag","saveError","count","selectedCount","retryFiles","required","fileSignature","reduce","config","enabled","maxBatchSize","find","FileName","$te","controller","abort","retry","signature","AbortController","findIndex","splice","$message","repairIndex","indexPending","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_component_el_tab_pane","_component_AITagPanel","_component_el_tabs","dialogWidth","beforeClose","fileCount","pendingIndexIds","aiBusy","activeTab","beforeTabChange","tagsToAdd","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","prefix","showSuggestions","suggestions","selectSuggestion","removeFromToAdd","executeAddTags","commonTags","handleRemoveCommonTag","handleClearAllTags","lazy","selectedFilesOnly","onBusy","onApplied","handleAIResults","AITagPanel","selectedFiles","debounceTimer","fileIds","loadCommonTags","resetData","newTab","clearTimeout","updateSavedTags","Set","add","delete","finishTagOperation","successKey","success","updated","warning","repairIndexIds","updates","Map","allTags","Tags","every","fetchSuggestions","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","currentTags","handleAddTag","handleRemoveTag","popularTags","role","tabindex","handleAddPopularTag","onKeydown","loadingPopularTags","aiFiles","Loading","fileMetadata","loadFileTags","loadPopularTags","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","border","column","descColumn","editForm","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","ratio","sizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","open","oldFileId","disableTooltip","handleClear","actions","command","className","_component_el_checkbox","onTouchstart","onTouchend","onTouchmove","localSelected","handleSelectChange","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","tagIndex","background","getTagColor","channelTag","uploadDate","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_card","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","variant","indeterminate","ariaChecked","handleClick","markIcon","event","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","arr","groups","handler","newFilters","deep","viewBox","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_component_DashboardTabs","_component_FilterDropdown","_component_el_header","_component_DashboardCheckbox","_component_el_radio_button","_component_el_radio_group","_component_el_divider","_component_el_dropdown_item","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","onCommand","setSortField","sortOrder","setSortOrder","sortField","sortLabel","cx","cy","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","tagFileMetadata","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","newFileList","isIndexedResponse","loadMoreFiles","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","SORT_FIELDS","SORT_ORDERS","getStoredSortValue","validValues","fallback","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","DashboardCheckbox","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","labelKeys","rawName","fieldLabel","orderLabel","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","userConfig","urlPrefix","location","origin","newData","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","sort","localeCompare","link","href","download","click","tab","$confirm","updateStats","handleBatchDelete","promises","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","order","getSizeInBytes","parseSize","parsedValue","isFinite","sizeInBytes","sizeInMegabytes","getValue","RawName","getTime","compare","valA","valB","videoElement","fetch","credentials","authType","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","folderItems","fileItems","totalCount","adminLoggedIn","has","cached","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/895.df959629.js.map.gz b/frontend-dist/js/895.df959629.js.map.gz new file mode 100644 index 0000000..77b70c0 Binary files /dev/null and b/frontend-dist/js/895.df959629.js.map.gz differ diff --git a/frontend-dist/js/app.3c3cf9d6.js b/frontend-dist/js/app.3c3cf9d6.js deleted file mode 100644 index 40417f2..0000000 --- a/frontend-dist/js/app.3c3cf9d6.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){"use strict";var e={457:function(e,a,t){var o=t(94373);const n=o.A.create({baseURL:"/",withCredentials:!0});a.A=n},16915:function(e,a,t){var o=t(48512),n=t(51219),i=t(25507),l=t(457),r=t(46638);const s=(e,a,t)=>{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(o=>{const l=o.data||{};if(!l.adminRequired)return i.A.commit("beginAdminAccess",{required:!1,fresh:!["dashboard","systemConfig","customerConfig"].includes(a.name)}),i.A.commit("setAdminLoggedIn",!0),t();if(l.valid&&"admin"===l.authType)return i.A.commit("beginAdminAccess",{required:!0,fresh:!1}),i.A.commit("setAdminLoggedIn",!0),t();const s=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(s&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return i.A.commit("setUserLoggedIn",!0),t();if(o.valid)return i.A.commit("setUserLoggedIn",!0),t();const l=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(l&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(903),t.e(173),t.e(860),t.e(502)]).then(t.bind(t,67502)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(990)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(860),t.e(787)]).then(t.bind(t,57022)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(223)]).then(t.bind(t,94223)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(126)]).then(t.bind(t,10126)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(730)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(385).then(t.bind(t,57385))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(168)]).then(t.bind(t,75875))}],m=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=m},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),i=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,adminAccessStarted:!1,adminAuthWarningVisible:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a,a||(e.adminAccessStarted=!1,e.adminAuthWarningVisible=!1)},beginAdminAccess(e,{required:a,fresh:t}){a||!t&&e.adminAccessStarted||(e.adminAuthWarningVisible=!0),e.adminAccessStarted=!0},dismissAdminAuthWarning(e){e.adminAuthWarningVisible=!1},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,i.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return f},BY:function(){return g},xS:function(){return h}});t(17642),t(58004),t(33853),t(45876),t(32475),t(15024),t(31698);var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","selectFolderUpload":"选择文件夹上传","dragUploadText":"拖拽 点击 或 {pasteShortcut} 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","allChannels":"全部","configuredChannelsOnly":"已配置","noConfiguredChannels":"暂无已配置渠道","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortAsc":"升序","sortDesc":"降序","sortByTime":"时间","sortBySize":"大小","sortByRawName":"文件 ID","sortByFileName":"文件名","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","partialSave":"已完成 {saved}/{total} 个文件,请重试未完成的操作。","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败","indexPending":"标签已保存,索引同步失败。"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"systemOverview":"系统运行概览","healthHealthy":"运行正常","healthChecking":"正在检查","healthAttention":"状态读取异常","greetingMorning":"早上好,欢迎回来","greetingNoon":"中午好,保持好状态","greetingAfternoon":"下午好,工作顺利","greetingEvening":"晚上好,辛苦了","greetingLateNight":"夜深了,注意休息","summaryChecking":"正在连接系统服务并读取最新的索引信息…","summaryUnavailable":"暂时无法读取系统状态,请检查网络连接或稍后刷新页面。","summaryEmpty":"系统响应正常,索引服务已就绪,正在等待首个文件上传。","summaryIndexed":"系统响应正常,当前已索引 {files} 个文件。","summaryHealthy":"系统响应正常,当前已索引 {files} 个文件,覆盖 {channels} 个上传渠道。","localTime":"本地时间","localTimezone":"本地时区","totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存","unsaved":"有未保存的修改","failed":"保存失败,请重试"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"},"sysAI":{"edit":"编辑","editProvider":"编辑供应商","editModel":"编辑模型","cancel":"取消","confirm":"确定","confirmAdd":"确认添加","required":"请填写{field}","invalidURL":"请输入有效的 HTTP 或 HTTPS 地址,不包含用户名、密码、查询参数或片段。","title":"智能设置","enable":"启用 AI","providers":"供应商","models":"模型","prompts":"Prompt 管理","tagging":"图片标签识别","enableTagging":"开启识别功能","name":"名称","protocol":"调用协议","keyUnchanged":"已配置,留空保持原密钥","enterKey":"输入 API Key","keyNotConfigured":"未配置 API Key","clearKey":"删除已保存的密钥","enabled":"启用供应商","remove":"删除","addProvider":"添加供应商","provider":"供应商","modelName":"模型标识","vision":"支持图片输入","jsonMode":"结构化输出","jsonModeHint":"Prompt 约束:通过提示词要求输出 JSON,兼容性较好。\\n原生 JSON object:启用接口的 JSON 模式,需要供应商和模型支持。","promptOnly":"Prompt 约束","nativeJsonObject":"原生 JSON object","outputTokens":"最大输出 Token","test":"测试连接","addModel":"添加模型","tagPrompt":"图片标签识别 Prompt","promptHint":"可用变量:","resetPrompt":"恢复内置 Prompt","language":"标签语言","maxTags":"每张图片最多标签数","vocabulary":"推荐标签词表","vocabularyHint":"使用中文逗号(,)、英文逗号(,)或换行分隔,最多 100 个","timeout":"模型请求超时(毫秒)","batchSize":"每批最大图片数","concurrency":"模型调用并发数","providerInUse":"请先删除或修改使用此供应商的模型。","saved":"智能设置已保存","testSuccess":"连接成功,耗时 {ms} 毫秒","credentialHint":"请在部署环境配置至少 32 个字符的随机密钥 AI_CONFIG_SECRET,API Key 将加密保存。","general":"基础设置","noProviders":"暂无供应商","noModels":"暂无模型"},"aiTags":{"tab":"AI 标签识别","hint":"选中建议标签后保存,已有标签会保留。","disabled":"尚未配置图片标签能力","generate":"生成","cancel":"取消生成","retry":"重试","settings":"前往智能设置","progress":"已处理 {done} / {total} 张","saved":"已保存","noTags":"未生成标签","apply":"保存","indexPending":"标签已保存,索引同步失败。再次保存可重试同步。","ready":"待生成标签","selection":"已选 {count} 个"},"adminAuthWarning":{"title":"登录设置提示","message":"当前未设置管理端用户名和密码,请尽快前往设置!","configure":"前往安全设置","close":"我知道了"},"aiErrors":{"AI_DISABLED":"图片标签识别未开启,请前往智能设置。","INVALID_CONFIG":"智能设置不完整或无效,请检查供应商、模型和识别设置。","CREDENTIAL_CONFIG":"无法使用供应商密钥,请检查 AI_CONFIG_SECRET 或重新填写 API Key。","CONFIG_CONFLICT":"智能设置已被修改,请重新加载后保存。","PROVIDER_REDIRECT":"供应商接口发生重定向,请填写最终的 Base URL。","PROVIDER_AUTH":"供应商或上游服务认证失败(HTTP 401)。","PROVIDER_BLOCKED":"请求被供应商安全防护拦截(HTTP 403),请检查防火墙规则。","PROVIDER_FORBIDDEN":"供应商拒绝请求(HTTP 403),请检查模型和图片输入权限。","PROVIDER_RATE_LIMIT":"供应商请求频率已达上限,请稍后重试。","PROVIDER_ERROR":"供应商返回 HTTP {status},请检查模型和接口。","PROVIDER_UNAVAILABLE":"无法连接供应商,请检查网络和 Base URL。","TIMEOUT":"识别请求超时或已取消,请重试。","UNSUPPORTED_IMAGE":"无法处理此图片,支持 JPEG、PNG、WebP、AVIF 和 GIF。","IMAGE_TOO_LARGE":"原图超过 20 MB,已跳过。","PREVIEW_TOO_LARGE":"图片超过处理限制,已跳过。","INVALID_RESPONSE":"返回结果无效,请重试。","CANCELLED":"尚未处理,可点击重试继续。","INVALID_INPUT":"请求参数无效,请检查输入后重试。","INVALID_FILE":"文件标识无效。","FILE_NOT_FOUND":"文件已不存在,请刷新文件列表。","UNSUPPORTED_INPUT":"当前模型或文件不支持图片标签识别。","INVALID_IMAGE":"图片预览无效或超过限制,请重新生成。","FILE_CHANGED":"文件已发生变化,请重新生成标签。","INVALID_TAGS":"标签格式或数量超过限制,请减少或修改标签。","METADATA_TOO_LARGE":"文件元数据超过 KV 的 1 KB 限制,请减少标签。","INPUT_TOO_LARGE":"请求超过大小限制,请减少图片或标签。","INTERNAL_ERROR":"操作失败,请稍后重试。","AUTH_REQUIRED":"管理端登录已失效,请重新登录。","IMAGE_FETCH_FAILED":"图片读取失败(HTTP {status}),请检查文件访问权限。","HTTP_ERROR":"请求失败(HTTP {status}),请稍后重试。","NETWORK_ERROR":"请求失败,请检查网络后重试。","INVALID_ACTION":"标签操作无效。","UNSUPPORTED_CAPABILITY":"不支持此 AI 功能。","METHOD_NOT_ALLOWED":"不支持此请求方法。","code":"错误码","type":"类型","requestId":"请求编号"}}'),i=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","selectFolderUpload":"Choose a folder to upload","dragUploadText":"Drag Click or {pasteShortcut} to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","allChannels":"All Channels","configuredChannelsOnly":"Configured Only","noConfiguredChannels":"No configured channels","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortAsc":"Ascending","sortDesc":"Descending","sortByTime":"Time","sortBySize":"Size","sortByRawName":"File ID","sortByFileName":"File Name","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","partialSave":"Completed {saved}/{total} files. Please retry the unfinished operation.","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags","indexPending":"Tags saved, but index synchronization failed."},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"systemOverview":"System runtime overview","healthHealthy":"Running normally","healthChecking":"Checking status","healthAttention":"Status unavailable","greetingMorning":"Good morning, welcome back","greetingNoon":"Good afternoon, stay in the flow","greetingAfternoon":"Good afternoon, hope work goes smoothly","greetingEvening":"Good evening, thanks for your work today","greetingLateNight":"It\'s late, remember to take a break","summaryChecking":"Connecting to system services and reading the latest index information…","summaryUnavailable":"System status is temporarily unavailable. Check the connection or refresh again later.","summaryEmpty":"The system is responding normally and the index service is ready for the first upload.","summaryIndexed":"The system is responding normally with {files} indexed files.","summaryHealthy":"The system is responding normally with {files} indexed files across {channels} upload channels.","localTime":"Local Time","localTimezone":"Local timezone","totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save","unsaved":"Unsaved changes","failed":"Failed to save. Please try again."},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"},"sysAI":{"edit":"Edit","editProvider":"Edit provider","editModel":"Edit model","cancel":"Cancel","confirm":"Confirm","confirmAdd":"Confirm Add","required":"{field} is required","invalidURL":"Enter a valid HTTP or HTTPS URL without credentials, query parameters or fragments.","title":"AI Settings","enable":"Enable AI","providers":"Providers","models":"Models","prompts":"Prompt Management","tagging":"Image Tag Recognition","enableTagging":"Enable recognition","name":"Name","protocol":"Protocol","keyUnchanged":"Configured; leave blank to keep the Key","enterKey":"Enter API Key","keyNotConfigured":"API Key not configured","clearKey":"Delete saved Key","enabled":"Enable provider","remove":"Remove","addProvider":"Add provider","provider":"Provider","modelName":"Model identifier","vision":"Supports images","jsonMode":"Structured output","jsonModeHint":"Prompt constraints: Request JSON through instructions for broader compatibility.\\nNative JSON object: Enable the API\'s JSON mode; provider and model support is required.","promptOnly":"Prompt constraints","nativeJsonObject":"Native JSON object","outputTokens":"Maximum output tokens","test":"Test connection","addModel":"Add model","tagPrompt":"Image tag recognition prompt","promptHint":"Available variables:","resetPrompt":"Restore built-in prompt","language":"Tag language","maxTags":"Maximum tags per image","vocabulary":"Preferred tags","vocabularyHint":"Separate with English commas (,), Chinese commas (,) or newlines, up to 100 tags","timeout":"Provider timeout (ms)","batchSize":"Maximum images per batch","concurrency":"Concurrent model calls","providerInUse":"Remove or reassign models using this provider first.","saved":"AI settings saved","testSuccess":"Connected in {ms} ms","credentialHint":"Set AI_CONFIG_SECRET to a random secret of at least 32 characters in the deployment environment. API Keys are encrypted before saving.","general":"General Settings","noProviders":"No providers yet","noModels":"No models yet"},"aiTags":{"tab":"AI Tag Recognition","hint":"Select the suggested tags to append. Existing tags are preserved.","disabled":"Image tagging is not configured","generate":"Generate","cancel":"Cancel generation","retry":"Retry","settings":"Open AI Settings","progress":"Processed {done} / {total} images","saved":"Saved","noTags":"No tags suggested","apply":"Save","indexPending":"Tags saved, but index synchronization failed. Save again to retry synchronization.","ready":"Ready to generate","selection":"{count} selected"},"adminAuthWarning":{"title":"Login Settings","message":"The admin username and password have not been configured. Please set them as soon as possible!","configure":"Open Security Settings","close":"Dismiss"},"aiErrors":{"AI_DISABLED":"Image tag recognition is disabled. Open AI Settings to enable it.","INVALID_CONFIG":"AI settings are incomplete or invalid. Check providers, models and recognition settings.","CREDENTIAL_CONFIG":"Cannot use the provider key. Check AI_CONFIG_SECRET or enter the API Key again.","CONFIG_CONFLICT":"AI settings have changed. Reload before saving.","PROVIDER_REDIRECT":"The provider endpoint redirected. Use its final Base URL.","PROVIDER_AUTH":"Provider or upstream authentication failed (HTTP 401).","PROVIDER_BLOCKED":"Provider security protection blocked the request (HTTP 403). Check firewall rules.","PROVIDER_FORBIDDEN":"The provider denied the request (HTTP 403). Check model and image input permissions.","PROVIDER_RATE_LIMIT":"The provider rate limit was reached. Try again later.","PROVIDER_ERROR":"The provider returned HTTP {status}. Check the model and endpoint.","PROVIDER_UNAVAILABLE":"Cannot connect to the provider. Check the network and Base URL.","TIMEOUT":"Recognition timed out or was cancelled. Please retry.","UNSUPPORTED_IMAGE":"Cannot process this image. Supported formats: JPEG, PNG, WebP, AVIF and GIF.","IMAGE_TOO_LARGE":"Original exceeds 20 MB; skipped.","PREVIEW_TOO_LARGE":"Image exceeds the processing limit; skipped.","INVALID_RESPONSE":"Invalid response. Please retry.","CANCELLED":"Not processed. Retry to continue.","INVALID_INPUT":"Invalid request parameters. Check your input and retry.","INVALID_FILE":"Invalid file ID.","FILE_NOT_FOUND":"The file no longer exists. Refresh the file list.","UNSUPPORTED_INPUT":"The model or file does not support image tag recognition.","INVALID_IMAGE":"The image preview is invalid or exceeds limits. Generate it again.","FILE_CHANGED":"The file has changed. Generate tags again.","INVALID_TAGS":"Tag format or count exceeds limits. Reduce or edit the tags.","METADATA_TOO_LARGE":"File metadata exceeds the KV 1 KB limit. Reduce the tags.","INPUT_TOO_LARGE":"The request exceeds size limits. Reduce the images or tags.","INTERNAL_ERROR":"Operation failed. Please try again later.","AUTH_REQUIRED":"The admin session has expired. Please log in again.","IMAGE_FETCH_FAILED":"Image retrieval failed (HTTP {status}). Check file access permissions.","HTTP_ERROR":"Request failed (HTTP {status}). Please try again later.","NETWORK_ERROR":"Request failed. Check your network and retry.","INVALID_ACTION":"Invalid tag operation.","UNSUPPORTED_CAPABILITY":"This AI capability is not supported.","METHOD_NOT_ALLOWED":"This request method is not supported.","code":"Code","type":"Type","requestId":"Request ID"}}');const l="app-locale",r="zh-CN",s=new Set(["zh-CN","en"]);function d(e){return s.has(e)?e:null}function c(){return d(localStorage.getItem(l))}function m(e){return c()||d(e)||r}const u=(0,o.hU)({legacy:!0,locale:c()||r,fallbackLocale:r,messages:{"zh-CN":n,en:i}});function p(e){u.global.locale=e,document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}function g(e){const a=m(e);return p(a),a}function h(e){const a=d(e)||r;p(a),localStorage.setItem(l,a)}var f=u},78673:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),i=t(21588),l=t(91646),r=(t(15412),t(30372),t(98950)),s=t(30292),d=t(47984),c=t(79262),m=t(70193),u=t(55363),p=t(31050),g=t(22909),h=t(10220),f=t(74036),y=t(90389),b=t(81828),T=t(27483),C=t(66806),k=t(61536),v=t(3263),A=t(57038),w=t(63416),S=t(63027),P=t(19223),I=t(93422),D=t(16249),F=t(34335),L=t(14722),N=t(16829),R=t(53916),U=t(48749),E=t(2511),M=t(12375),O=t(97619),x=t(84310),B=t(14552),_=t(79919),W=t(10767),V=t(20491),H=t(18422),q=t(17214),G=t(44845),z=t(55319),K=t(71669),j=t(38557),J=t(15925),Q=t(10798),Y=t(39329),$=t(59708),X=t(41165),Z=t(50230),ee=t(99288),ae=t(67992),te=t(37538),oe=t(13118),ne=t(36050),ie=t(69721),le=t(75192),re=t(50672),se=t(3149),de=t(11221),ce=t(73585),me=t(63236),ue=t(1860),pe=t(13110),ge=t(6246),he=t(42302),fe=t(75504),ye=t(40587),be=t(5299),Te=t(81775),Ce=t(13127),ke=t(18742),ve=t(97579),Ae=t(56746),we=t(58422),Se=t(20444),Pe=t(88502),Ie=t(21872),De=t(64795),Fe=t(82262),Le=t(88921),Ne=t(39916),Re=t(18579),Ue=t(80500),Ee=t(58428),Me=t(87849),Oe=t(78034),xe=t(59413),Be=t(58869),_e=t(79102),We=t(78337),Ve=t(38870),He=t(70577),qe=t(93212),Ge=t(40275),ze=t(52995),Ke=t(38410),je=t(167),Je=t(53223),Qe=t(97447),Ye=t(67830),$e=[u.rC,p.UH,g.B0,h.Ce,f.IN,d.xK,y.Df,b.ck,T.LB,C.e4,k.ok,v.$F,A.gK,w.e6,S.rQ,P.Jt,I.Wz,D.Xk,F.B2,L.a$,N.jB,c.ZD,R.wF,U.rO,E.jT,M.Xb,O.dB,x.Ub,B.q9,_.rM,W.jP,V.he,m._2,H.cb,q.MT,G.vH,z.v,K.bx,j.tU,J.zp,Q.A,Y.pS,$.A4,X.h8,Z.o1,ee.UD,ae.mR,te.ao,oe.Uj,ne.gD,ie.Bw,le.CY,re.In,se.v0,de.lS,ce.jb,me.yv,ue.Up,pe.iW,ge.CQ,he.IT,fe.EZ,ye.xb,be.PJ,Te.X,Ce.ji,ke.is,ve.R9,Ae.QL,we.wR,Se.oE,Pe.ye,Ie.UB,De.hS,Fe.Mj,Le.D6,Ne.QO,Re.V2,Ue.im,Ee.Gx,Me.H9,Oe.Yp,xe.z1,Be.Nf,_e.oM,We.VN,Ve.Ot,He.xi,qe._2,Ge.DX,ze.l9,Ke.GR,je.ns,Je.Be,Qe.Jm,Ye.Mc],Xe=t(97722),Ze=(t(85331),t(10961),t(9267)),ea=(t(15616),t(80047)),aa=(t(99648),t(89559)),ta=(t(85332),t(56768)),oa=t(24232);function na(e,a,t,o,n,i){const l=(0,ta.g2)("router-view"),r=aa.KR,s=ea.S2,d=Ze.kZ,c=Xe.H6;return(0,ta.uX)(),(0,ta.Wv)(c,{locale:i.elementLocale},{default:(0,ta.k6)(()=>[(0,ta.bF)(l),(0,ta.bF)(d,{modelValue:i.adminAuthWarningVisible,"onUpdate:modelValue":a[1]||(a[1]=e=>i.adminAuthWarningVisible=e),title:e.$t("adminAuthWarning.title"),width:"min(480px, 90vw)","close-on-click-modal":!1,"close-on-press-escape":!1},{footer:(0,ta.k6)(()=>[(0,ta.bF)(s,{onClick:i.openSecuritySettings},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.configure")),1)]),_:1},8,["onClick"]),(0,ta.bF)(s,{type:"primary",onClick:a[0]||(a[0]=a=>e.$store.commit("dismissAdminAuthWarning"))},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.close")),1)]),_:1})]),default:(0,ta.k6)(()=>[(0,ta.bF)(r,{title:e.$t("adminAuthWarning.message"),type:"warning","show-icon":"",closable:!1,class:"admin-auth-warning-message"},null,8,["title"])]),_:1},8,["modelValue","title"])]),_:1},8,["locale"])}t(44114);var ia=t(60782),la=t(6166),ra=t(55186),sa=t(54791),da={data(){return{osInstance:null,imageViewerObserver:null}},computed:{adminAuthWarningVisible:{get(){return this.$store.state.adminAuthWarningVisible},set(e){e||this.$store.commit("dismissAdminAuthWarning")}},...(0,ia.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ra.A:sa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{openSecuritySettings(){this.$store.commit("dismissAdminAuthWarning"),this.$router.push("/systemConfig#security")},initOverlayScrollbars(){try{if(la.ae.valid(document.body))return void(this.osInstance=(0,la.ae)(document.body));this.osInstance=(0,la.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},ca=t(71241);const ma=(0,ca.A)(da,[["render",na],["__scopeId","data-v-d5214426"]]);var ua=ma,pa=t(16915),ga=t(25507),ha=t(46638),fa=t(57477);t(21862),t(50635);r.Yv.add(...$e),i.k.offset=30;const ya=(0,o.Ef)(ua),ba=(0,n.Zf)();ya.component("font-awesome-icon",s.gc);for(const[Aa,wa]of Object.entries(fa))ya.component(Aa,wa);const Ta=()=>{const e=document.documentElement;let a;if(ga.A.state.cusDarkMode&&null!==ga.A.state.useDarkMode)a=ga.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}ga.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},Ca=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},ka=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},va=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),i=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",i.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",i.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",i.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(i)};ga.A.dispatch("fetchUserConfig").then(()=>{(0,ha.BY)(ga.A.getters.userConfig?.defaultLanguage),Ta(),ka(ga.A.getters.userConfig),va(ga.A.state.useDarkMode,ga.A.getters.userConfig),ga.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&ga.A.state.cusDarkMode&&(Ca(a.useDarkMode),va(a.useDarkMode,ga.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(Ta(),va(ga.A.state.useDarkMode,ga.A.getters.userConfig))}),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),(0,ha.BY)(),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).use(ba).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var i=a[o]={exports:{}};return e[o].call(i.exports,i,i.exports,t),i.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,i){if(!o){var l=1/0;for(c=0;c=i)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[o,n,i]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{126:"844eba4a",168:"16edcf49",223:"73628f82",380:"94df9ff7",385:"4d3f7ac7",502:"ff024e4c",540:"8854b4d5",711:"936a7109",730:"1feabc6e",773:"f0780366",787:"b5df6f2f",903:"1e4b549d",990:"e04c4ad6"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{126:"8d4195f5",168:"448a9124",173:"36158ceb",223:"6b74609d",385:"4f25fc20",502:"7f4cb9f9",581:"01652a63",711:"1a30de22",730:"a3834df3",773:"147d098d",787:"176e498b",860:"3febd367",990:"a3834df3"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,i,l){if(e[o])e[o].push(n);else{var r,s;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(o=>{const l=o.data||{};if(!l.adminRequired)return i.A.commit("beginAdminAccess",{required:!1,fresh:!["dashboard","systemConfig","customerConfig"].includes(a.name)}),i.A.commit("setAdminLoggedIn",!0),t();if(l.valid&&"admin"===l.authType)return i.A.commit("beginAdminAccess",{required:!0,fresh:!1}),i.A.commit("setAdminLoggedIn",!0),t();const s=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(s&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=i.A.state.adminLoggedIn;i.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{l.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return i.A.commit("setUserLoggedIn",!0),t();if(o.valid)return i.A.commit("setUserLoggedIn",!0),t();const l=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(l&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=i.A.state.userLoggedIn;i.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(903),t.e(173),t.e(860),t.e(502)]).then(t.bind(t,67502)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(990)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(860),t.e(895)]).then(t.bind(t,88642)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(223)]).then(t.bind(t,94223)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(540),t.e(581),t.e(126)]).then(t.bind(t,10126)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(730)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(385).then(t.bind(t,57385))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(787)]).then(t.bind(t,75875))}],m=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=m},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),i=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,adminAccessStarted:!1,adminAuthWarningVisible:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a,a||(e.adminAccessStarted=!1,e.adminAuthWarningVisible=!1)},beginAdminAccess(e,{required:a,fresh:t}){a||!t&&e.adminAccessStarted||(e.adminAuthWarningVisible=!0),e.adminAccessStarted=!0},dismissAdminAuthWarning(e){e.adminAuthWarningVisible=!1},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,i.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return f},BY:function(){return g},xS:function(){return h}});t(17642),t(58004),t(33853),t(45876),t(32475),t(15024),t(31698);var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","selectFolderUpload":"选择文件夹上传","dragUploadText":"拖拽 点击 或 {pasteShortcut} 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","allChannels":"全部","configuredChannelsOnly":"已配置","noConfiguredChannels":"暂无已配置渠道","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortAsc":"升序","sortDesc":"降序","sortByTime":"时间","sortBySize":"大小","sortByRawName":"文件 ID","sortByFileName":"文件名","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","selectedFiles":"已选 {count} 个文件","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","partialSave":"已完成 {saved}/{total} 个文件,请重试未完成的操作。","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败","indexPending":"标签已保存,索引同步失败。"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"systemOverview":"系统运行概览","healthHealthy":"运行正常","healthChecking":"正在检查","healthAttention":"状态读取异常","greetingMorning":"早上好,欢迎回来","greetingNoon":"中午好,保持好状态","greetingAfternoon":"下午好,工作顺利","greetingEvening":"晚上好,辛苦了","greetingLateNight":"夜深了,注意休息","summaryChecking":"正在连接系统服务并读取最新的索引信息…","summaryUnavailable":"暂时无法读取系统状态,请检查网络连接或稍后刷新页面。","summaryEmpty":"系统响应正常,索引服务已就绪,正在等待首个文件上传。","summaryIndexed":"系统响应正常,当前已索引 {files} 个文件。","summaryHealthy":"系统响应正常,当前已索引 {files} 个文件,覆盖 {channels} 个上传渠道。","localTime":"本地时间","localTimezone":"本地时区","totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

允许公开浏览的目录,多个目录用逗号分隔

示例:wallpaper,photos,album

支持子目录:2026/lucky,2026/rich

访问链接:https://你的域名/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存","unsaved":"有未保存的修改","failed":"保存失败,请重试"},"theme":{"lightMode":"浅色模式","darkMode":"深色模式","autoMode":"自动模式"},"common":{"confirm":"确定","cancel":"取消","close":"关闭","save":"保存","delete":"删除","edit":"编辑","copy":"复制","download":"下载","retry":"重试","loading":"加载中...","success":"成功","failed":"失败","warning":"警告","info":"提示","yes":"是","no":"否","all":"全部类型","select":"请选择"},"validation":{"pathMustStartWithSlash":"目标目录必须以 \\"/\\" 开头","pathTraversalNotAllowed":"目标目录不能包含路径穿越字符 \\"..\\"","singleDotNotAllowed":"目标目录不能包含单独的 \\".\\" 路径段","consecutiveSlashNotAllowed":"目标目录不能包含连续的斜杠","invalidCharacters":"目标目录包含非法字符,请使用合法的路径格式","uploadDirReplace":"上传目录"},"language":{"switchTo":"中/En","switchLanguage":"切换语言"},"whitelist":{"title":"白名单模式已启用","description":"抱歉,当前已开启白名单模式,上传的图片需要审核通过后才能展示,请等待审核通过后再进行访问。","goHome":"返回首页","goBack":"返回上页","helpText":"您可以尝试:","uploadImage":"图片上传","refreshPage":"刷新页面"},"sysAI":{"edit":"编辑","editProvider":"编辑供应商","editModel":"编辑模型","cancel":"取消","confirm":"确定","confirmAdd":"确认添加","required":"请填写{field}","invalidURL":"请输入有效的 HTTP 或 HTTPS 地址,不包含用户名、密码、查询参数或片段。","title":"智能设置","enable":"启用 AI","providers":"供应商","models":"模型","prompts":"Prompt 管理","tagging":"图片标签识别","enableTagging":"开启识别功能","name":"名称","protocol":"调用协议","keyUnchanged":"已配置,留空保持原密钥","enterKey":"输入 API Key","keyNotConfigured":"未配置 API Key","clearKey":"删除已保存的密钥","enabled":"启用供应商","remove":"删除","addProvider":"添加供应商","provider":"供应商","modelName":"模型标识","vision":"支持图片输入","jsonMode":"结构化输出","jsonModeHint":"Prompt 约束:通过提示词要求输出 JSON,兼容性较好。\\n原生 JSON object:启用接口的 JSON 模式,需要供应商和模型支持。","promptOnly":"Prompt 约束","nativeJsonObject":"原生 JSON object","outputTokens":"最大输出 Token","test":"测试连接","addModel":"添加模型","tagPrompt":"图片标签识别 Prompt","promptHint":"可用变量:","resetPrompt":"恢复内置 Prompt","language":"标签语言","maxTags":"每张图片最多标签数","vocabulary":"推荐标签词表","vocabularyHint":"使用中文逗号(,)、英文逗号(,)或换行分隔,最多 100 个","timeout":"模型请求超时(毫秒)","batchSize":"每批最大图片数","concurrency":"模型调用并发数","providerInUse":"请先删除或修改使用此供应商的模型。","saved":"智能设置已保存","testSuccess":"连接成功,耗时 {ms} 毫秒","credentialHint":"请在部署环境配置至少 32 个字符的随机密钥 AI_CONFIG_SECRET,API Key 将加密保存。","general":"基础设置","noProviders":"暂无供应商","noModels":"暂无模型"},"aiTags":{"tab":"AI 标签识别","hint":"选中建议标签后保存,已有标签会保留。","disabled":"尚未配置图片标签能力","generate":"生成","cancel":"取消生成","retry":"重试","settings":"前往智能设置","progress":"已处理 {done} / {total} 张","saved":"已保存","noTags":"未生成标签","apply":"保存","indexPending":"标签已保存,索引同步失败。再次保存可重试同步。","ready":"待生成标签","selection":"已选 {count} 个"},"adminAuthWarning":{"title":"安全提示","message":"当前未设置管理端用户名和密码,请尽快前往设置!","configure":"前往安全设置","close":"我知道了"},"aiErrors":{"AI_DISABLED":"图片标签识别未开启,请前往智能设置。","INVALID_CONFIG":"智能设置不完整或无效,请检查供应商、模型和识别设置。","CREDENTIAL_CONFIG":"无法使用供应商密钥,请检查 AI_CONFIG_SECRET 或重新填写 API Key。","CONFIG_CONFLICT":"智能设置已被修改,请重新加载后保存。","PROVIDER_REDIRECT":"供应商接口发生重定向,请填写最终的 Base URL。","PROVIDER_AUTH":"供应商或上游服务认证失败(HTTP 401)。","PROVIDER_BLOCKED":"请求被供应商安全防护拦截(HTTP 403),请检查防火墙规则。","PROVIDER_FORBIDDEN":"供应商拒绝请求(HTTP 403),请检查模型和图片输入权限。","PROVIDER_RATE_LIMIT":"供应商请求频率已达上限,请稍后重试。","PROVIDER_ERROR":"供应商返回 HTTP {status},请检查模型和接口。","PROVIDER_UNAVAILABLE":"无法连接供应商,请检查网络和 Base URL。","TIMEOUT":"识别请求超时或已取消,请重试。","UNSUPPORTED_IMAGE":"无法处理此图片,支持 JPEG、PNG、WebP、AVIF 和 GIF。","IMAGE_TOO_LARGE":"原图超过 20 MB,已跳过。","PREVIEW_TOO_LARGE":"图片超过处理限制,已跳过。","INVALID_RESPONSE":"返回结果无效,请重试。","CANCELLED":"尚未处理,可点击重试继续。","INVALID_INPUT":"请求参数无效,请检查输入后重试。","INVALID_FILE":"文件标识无效。","FILE_NOT_FOUND":"文件已不存在,请刷新文件列表。","UNSUPPORTED_INPUT":"当前模型或文件不支持图片标签识别。","INVALID_IMAGE":"图片预览无效或超过限制,请重新生成。","FILE_CHANGED":"文件已发生变化,请重新生成标签。","INVALID_TAGS":"标签格式或数量超过限制,请减少或修改标签。","METADATA_TOO_LARGE":"文件元数据超过 KV 的 1 KB 限制,请减少标签。","INPUT_TOO_LARGE":"请求超过大小限制,请减少图片或标签。","INTERNAL_ERROR":"操作失败,请稍后重试。","AUTH_REQUIRED":"管理端登录已失效,请重新登录。","IMAGE_FETCH_FAILED":"图片读取失败(HTTP {status}),请检查文件访问权限。","HTTP_ERROR":"请求失败(HTTP {status}),请稍后重试。","NETWORK_ERROR":"请求失败,请检查网络后重试。","INVALID_ACTION":"标签操作无效。","UNSUPPORTED_CAPABILITY":"不支持此 AI 功能。","METHOD_NOT_ALLOWED":"不支持此请求方法。","code":"错误码","type":"类型","requestId":"请求编号"}}'),i=JSON.parse('{"login":{"title":"Login to {owner} ImgHub","adminTitle":"Admin Login","password":"Password","username":"Username","passwordPlaceholder":"Enter auth code","usernamePlaceholder":"Enter username","adminPasswordPlaceholder":"Enter password","submit":"Login","success":"Login successful","failed":"Login failed, please check your password","adminFailed":"Invalid username or password","serverError":"Server error","systemError":"System error","authRequired":"Please authenticate first!","authFailed":"Authentication failed!"},"upload":{"folderPlaceholder":"Upload directory","pasteUpload":"Paste Upload","fileUpload":"File Upload","selectFolderUpload":"Choose a folder to upload","dragUploadText":"Drag Click or {pasteShortcut} to paste upload","pasteUrlPlaceholder":"Paste external links, separate multiple links with line breaks","pasteUploadBtn":"Upload","pasteSave":"Save","pasteExternal":"External","history":"Upload History","announcement":"Announcements","noAnnouncement":"No announcements","announcementTitle":"Announcement","announcementAck":"Got it!","settings":"Upload Settings","linkFormat":"Link Format","manage":"Management","logout":"Logout","logoutSuccess":"Logged out","viewDocs":"Documentation","switchUploadMethod":"Switch Upload Method","copyAll":"Copy All","retryFailed":"Retry Failed","clearList":"Clear List","clearAll":"Clear All","clearUploaded":"Clear Uploaded"},"uploadForm":{"deleted":"{name} deleted","uploadSuccess":"{name} uploaded successfully","uploadFailed":"{name} upload failed","compressFailedCannotUpload":"{name} compression failed, cannot upload!","fileTooLarge":"{name} file too large, cannot upload!","compressedFileTooLarge":"{name} still too large after compression, cannot upload!","copySuccess":"Copied successfully","copyFailed":"Copy failed","copyAllSuccess":"All copied successfully","fileNotUploaded":"File not uploaded, cannot copy link","fileListCleared":"File list cleared","fileListEmpty":"File list is empty","successFilesCleared":"Uploaded files cleared","successFilesEmpty":"No uploaded files","noFailedFiles":"No failed files","autoRetryOn":"Auto retry enabled","autoRetryOff":"Auto retry disabled","autoRetry":"Auto Retry","maxRetryReached":"{name} reached max retry limit ({max}), stopping","urlRequestFailed":"URL request from clipboard failed","chunkMerging":"Chunk upload complete, merging file, please wait...","fileSizeTooLarge":"File too large","chunkInitFailed":"Failed to init chunked upload","uploadError":"Upload error occurred","imageLoadFailed":"Image load failed"},"uploadSettings":{"title":"Upload Settings","uploadChannel":"Upload Channel","channelType":"Channel Type","allChannels":"All Channels","configuredChannelsOnly":"Configured Only","noConfiguredChannels":"No configured channels","channelName":"Channel Name","channelNameTooltip":"Select a specific channel name. If not selected, load balancing or default channel will be used","autoSelect":"Auto Select","uploadDirectory":"Upload Directory","uploadDirectoryPlaceholder":"Enter upload directory path","autoSwitch":"Auto Switch","autoSwitchTooltip":"For non-chunked uploads, automatically switch to another channel on failure","fileNaming":"File Naming","namingDefault":"Default","namingIndex":"Prefix Only","namingOrigin":"Original Name","namingShort":"Short Link","filePreprocess":"File Preprocessing","filePreprocessTooltip":"Convert format and compress locally before upload, only applies to image files","convertToWebp":"Convert to WebP","convertToWebpTooltip":"Convert images to WebP format before upload to reduce file size. Falls back to original format on failure","fileCompress":"File Compression","compressThreshold":"Compression Threshold","compressThresholdTooltip":"Set image size threshold, files exceeding this will be auto-compressed (MB)","expectedSize":"Expected Size","expectedSizeTooltip":"Set expected image size after compression (MB)","serverCompress":"Server-side Compression","serverCompressTooltip":"1. Compress on Telegram side, only applies to image files uploaded via Telegram channel
2. If image size (after local compression) exceeds 10MB, this setting is ignored
3. For high-resolution, transparent background images, it\'s recommended to disable server compression to avoid issues","enableCompress":"Enable Compression","confirm":"OK"},"uploadHistory":{"title":"History","totalRecords":"{count} records","switchView":"Switch View","clearRecords":"Clear Records","loading":"Loading...","pullToLoadMore":"Pull to load more","noMoreRecords":"No more records","emptyHistory":"No upload history","linkCopied":"Link copied","copyFailed":"Copy failed","clearConfirmTitle":"Notice","clearConfirmMessage":"Are you sure you want to clear all upload records?","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","recordsCleared":"Records cleared","deleteConfirmMessage":"Are you sure you want to delete this record?","recordDeleted":"Record deleted"},"settings":{"linkFormatTitle":"Link Format Settings","defaultCopyLink":"Default Copy Format","rawLink":"Raw Link","customLink":"Custom Link","customLinkTooltip":"Default link is https://your.domain/file/xxx.jpg
If custom link format is enabled, only the xxx.jpg part is kept, please enter the rest manually","enableCustom":"Enable Custom","customPrefix":"Custom Prefix","customPrefixPlaceholder":"Enter custom link prefix","confirm":"OK","s3Link":"S3 Link"},"dashboard":{"searchPlaceholder":"Search: #tag -#exclude","sortAsc":"Ascending","sortDesc":"Descending","sortByTime":"Time","sortBySize":"Size","sortByRawName":"File ID","sortByFileName":"File Name","selectedItems":"selected","clearSelection":"Clear selection","copy":"Copy","delete":"Delete","download":"Download","move":"Move","tagManagement":"Tag Management","addToBlacklist":"Add to Blacklist","addToWhitelist":"Add to Whitelist","linkFormat":"Link Format","listView":"List View","cardView":"Card View","logout":"Logout","rootDirectory":"Root","totalFiles":"{count} files","noMatchingFiles":"No matching files or folders found","currentDirEmpty":"Current directory is empty","adjustSearchHint":"Try adjusting search criteria or filters","uploadHint":"Uploaded files will appear here","loadMore":"Load More","totalPages":"{count} pages","jumpTo":"Go to","preview":"Preview","fileName":"File Name","tags":"Tags","channelType":"Channel Type","channelNameCol":"Channel Name","uploadAddress":"Upload Address","fileSize":"Size","uploadTime":"Upload Time","actions":"Actions","externalTag":"External","unknownTag":"Unknown","detail":"Detail","copyLink":"Copy Link","moveFile":"Move","downloadFile":"Download","loadFailed":"Load failed","copySuccess":"Copied successfully","copyFailed":"Copy failed","deleteConfirm":"This will permanently delete this file. Continue?","deleteConfirmTitle":"Notice","deleteConfirmOk":"OK","deleteConfirmCancel":"Cancel","deleteSuccess":"Deleted successfully","deleteFailed":"Delete failed","blockConfirm":"This will add the file to blacklist. Continue?","blockSuccess":"Added to blacklist successfully","blockFailed":"Failed to add to blacklist","whiteConfirm":"This will add the file to whitelist. Continue?","whiteSuccess":"Added to whitelist successfully","whiteFailed":"Failed to add to whitelist","deleteFolderConfirm":"This will permanently delete this folder. Continue?","deleteFileConfirm":"This will permanently delete this file. Continue?","batchDeleteConfirm":"This will permanently delete selected files and folders. Continue?","batchDeleteSuccess":"Batch delete successful","batchDeleteFailed":"Batch delete failed","batchBlockConfirm":"This will add selected files to blacklist. Continue?","batchBlockSuccess":"Batch blacklist successful","batchBlockFailed":"Batch blacklist failed","batchWhiteConfirm":"This will add selected files to whitelist. Continue?","batchWhiteSuccess":"Batch whitelist successful","batchWhiteFailed":"Batch whitelist failed","noLinksAvailable":"No links to copy","batchCopySuccess":"Copied {count} links successfully","batchCopyFailed":"Batch copy failed, please retry","batchCopyLinksSuccess":"Batch copy successful","copyFileLinkSuccess":"File link copied","fileListMemoryCacheWarning":"The file list is large, so it is being kept in memory. Refreshing the page will require loading it again.","indexingWarning":"The index is still building, so current search and sort results may be inaccurate. Please try again later.","loadMoreFailed":"Failed to load more files, please check network","moveSuccess":"Moved successfully","moveFailed":"Move failed","moveTargetSameAsCurrent":"Target folder cannot be the current folder","invalidPageNumber":"Please enter a valid page number","pageExceedsMax":"Page number cannot exceed {max}","loadingData":"Loading data, please wait...","loadDataFailed":"Failed to load data, please check network","fetchFileListFailed":"Failed to fetch file list","refreshFailed":"Refresh failed, please retry","selectFilesFirst":"Please select files first","syncDataError":"Error syncing data, please check network","fetchingFileList":"Fetching file list...","folderEmptyNoLinks":"Folder is empty, no links to copy","copiedFileLinks":"Copied {count} file links","copyFolderLinksFailed":"Failed to copy folder links, please retry"},"dashboardTabs":{"fileManagement":"File Management","userManagement":"User Management","systemSettings":"System Settings","fileUpload":"File Upload"},"fileDetail":{"title":"File Details","download":"Download","tags":"Tags","blacklist":"Blacklist","whitelist":"Whitelist","deleteBtn":"Delete","edit":"Edit","rename":"Rename","save":"Save","cancel":"Cancel","originUrl":"Original Link","fileNameLabel":"File Name","fileNamePlaceholder":"Enter file name","fileType":"File Type","fileTypePlaceholder":"e.g. image/jpeg","fileSizeLabel":"File Size","imageDimensions":"Dimensions","noDimensions":"N/A","uploadTimeLabel":"Upload Time","channelTypeAndName":"Channel Type/Name","accessStatusAndReview":"Access Status/Review","uploadIP":"Upload IP","uploadAddressLabel":"Upload Address","fileTags":"File Tags","noTags":"No tags","unknown":"Unknown","accessNormal":"Normal","accessNormalWhitelist":"Normal (Whitelisted)","accessBlockedBlacklist":"Blocked (Blacklisted)","accessBlockedReview":"Blocked (Review rejected)","orientationLandscape":"Landscape","orientationPortrait":"Portrait","orientationSquare":"Square","linkCopied":"Link copied","metadataSaved":"Metadata saved successfully","metadataSaveFailed":"Failed to save metadata","renameTitle":"Rename File ID","renameLabel":"New File ID","renamePlaceholder":"Enter new File ID","renameCancel":"Cancel","renameConfirm":"Confirm Rename","renameSuccess":"File renamed successfully","renameConflict":"Target file name already exists","renameFailed":"Rename failed"},"filter":{"accessStatus":"Access Status","normal":"Normal","blocked":"Blocked","blackWhiteList":"Black/White List","whiteList":"Whitelist","blackList":"Blacklist","notSet":"Not Set","reviewResult":"Review Result","teenContent":"12+ Content","adultContent":"Adult Content","fileType":"File Type","image":"Image","video":"Video","audio":"Audio","other":"Other","channelType":"Channel Type","externalLink":"External Link","channelName":"Channel Name","clearFilters":"Clear Filters"},"moveFile":{"title":"Move File","batchTitle":"Batch Move Files","targetDirectory":"Target Directory","targetPlaceholder":"Enter target directory path","hint":"Tip: Paths starting with / indicate root directory, e.g. /photos/2024/","hintMobile":"Tip: Paths starting with / indicate root directory","selectDirectory":"Select Directory","cancel":"Cancel","confirm":"OK","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadTreeFailed":"Failed to load directory tree, please check network connection"},"batchTag":{"title":"Batch Tag Management","selectedFiles":"{count} files selected","addTab":"Add","removeTab":"Remove","clearTab":"Clear","addDescription":"Add tags to {count} selected files","inputPlaceholder":"Enter tag name","pendingTags":"Tags to add","noPendingTags":"No tags to add","addToAllFiles":"Add to all files","removeDescription":"Remove common tags from selected files","commonTags":"Common Tags","noCommonTags":"Selected files have no common tags","clearDescription":"Clear all tags from {count} selected files","clearWarningTitle":"⚠️Warning","clearWarningDesc":"This will clear all tags from selected files and cannot be undone","confirmClearAll":"Confirm clear all tags","tagAlreadyInList":"Tag already in list","pleaseAddTags":"Please add tags first","addSuccess":"Tags added to {count} files successfully","addFailed":"Batch tag addition failed","removeSuccess":"Tags removed from {count} files successfully","removeFailed":"Tag removal failed","clearConfirmMessage":"Are you sure you want to clear all tags from {count} selected files? This cannot be undone.","clearConfirmTitle":"Confirm Clear","clearConfirmOk":"OK","clearConfirmCancel":"Cancel","clearCancelled":"Clear operation cancelled","clearSuccess":"Tags cleared from {count} files successfully","clearFailed":"Failed to clear tags","partialSave":"Completed {saved}/{total} files. Please retry the unfinished operation.","loadCommonTagsFailed":"Failed to load common tags"},"tagManagement":{"title":"Tag Management","inputPlaceholder":"Enter tag name","currentTags":"Current Tags","noTags":"No tags","popularTags":"Popular Tags","loading":"Loading...","noPopularTags":"No popular tags","close":"Close","tagExists":"Tag already exists","addSuccess":"Tag added successfully","addFailed":"Failed to add tag","removeSuccess":"Tag removed successfully","removeFailed":"Failed to remove tag","loadFailed":"Failed to load tags","indexPending":"Tags saved, but index synchronization failed."},"mobileAction":{"viewDetail":"View Details","copyLink":"Copy Link","downloadFile":"Download File","moveFile":"Move File","tagManagement":"Tag Management","moveFolder":"Move Folder","deleteFile":"Delete File","deleteFolder":"Delete Folder"},"mobileDirectory":{"title":"Directory Navigation","rootDirectory":"Root","goBack":"Go Back"},"sysConfig":{"logout":"Logout"},"sysConfigTabs":{"systemStatus":"System Status","uploadSettings":"Upload Settings","securitySettings":"Security Settings","pageSettings":"Page Settings","otherSettings":"Other Settings"},"dateRangeCalendar":{"previousMonth":"Previous month","nextMonth":"Next month","startDate":"Start date","endDate":"End date","rangeSeparator":"to","monthTitle":"{year}-{month}","weekdaySun":"Sun","weekdayMon":"Mon","weekdayTue":"Tue","weekdayWed":"Wed","weekdayThu":"Thu","weekdayFri":"Fri","weekdaySat":"Sat"},"sysStatus":{"systemOverview":"System runtime overview","healthHealthy":"Running normally","healthChecking":"Checking status","healthAttention":"Status unavailable","greetingMorning":"Good morning, welcome back","greetingNoon":"Good afternoon, stay in the flow","greetingAfternoon":"Good afternoon, hope work goes smoothly","greetingEvening":"Good evening, thanks for your work today","greetingLateNight":"It\'s late, remember to take a break","summaryChecking":"Connecting to system services and reading the latest index information…","summaryUnavailable":"System status is temporarily unavailable. Check the connection or refresh again later.","summaryEmpty":"The system is responding normally and the index service is ready for the first upload.","summaryIndexed":"The system is responding normally with {files} indexed files.","summaryHealthy":"The system is responding normally with {files} indexed files across {channels} upload channels.","localTime":"Local Time","localTimezone":"Local timezone","totalFiles":"Total Files","clickToRefresh":"Click to refresh","indexUpdateTime":"Index Update Time","systemVersion":"System Version","clickToViewChangelog":"Click to view changelog","channelDistribution":"Upload Channel Distribution","fileStatusDistribution":"File Status Distribution","uploadTrend":"Upload Trend","uploadTrendGroupBy":"Upload trend group by","totalUploads":"Total Uploads","byChannelType":"Channel Type","byChannelName":"Channel Name","selectDateRange":"Select date range","otherChannels":"Other","uploadsUnit":"uploads","noData":"No data","totalFilesLabel":"Total Files","statusTypes":"Status Types","systemMaintenance":"System Maintenance","rebuildIndex":"Rebuild Index","rebuilding":"Rebuilding...","rebuildTooltip":"Rescan all files and update index data, useful for fixing data inconsistencies","backupData":"Backup Data","backingUp":"Backing up...","backupTooltip":"Backup all file metadata and system settings to a JSON file","restoreData":"Restore Data","restoring":"Restoring...","restoreTooltip":"Restore data from a backup file, this will overwrite existing file metadata and system settings","cancelOperation":"Cancel Operation","retry":"Retry","close":"Close","records":"records","aboutToComplete":"Almost done","seconds":"~{count} seconds","minutes":"~{count} minutes","hoursMinutes":"~{hours} hours {minutes} minutes","phaseFetching":"Fetching data","phaseSorting":"Sorting","phaseUploading":"Uploading","phaseFinalizing":"Finalizing","phaseBuilding":"Building backup","phaseDownloading":"Generating download","phaseRestoringFiles":"Restoring files","phaseRestoringSettings":"Restoring settings","phaseCompleted":"Completed","phaseRetrying":"Retrying","rebuildSuccess":"Index rebuild complete! Processed {count} files","backupSuccess":"Backup complete! Backed up {count} files","backupSuccessWithSettings":"Backup complete! Backed up {fileCount} files and {settingsCount} settings","operationInProgress":"An operation is already in progress","selectJsonFile":"Please select a JSON backup file","restoreConfirmMessage":"Restoring will overwrite existing file metadata and system settings. This cannot be undone. Continue?","restoreConfirmTitle":"Confirm Restore","restoreConfirmOk":"Confirm Restore","restoreConfirmCancel":"Cancel","invalidBackupFile":"Invalid backup file format, please select a valid JSON file","restoreSuccess":"Restore complete! Restored {files} files and {settings} settings, rebuilding index...","restoreFailed":"Failed to restore data","fetchIndexFailed":"Failed to fetch index information","unknown":"Unknown","blocked":"Blocked","normalStatus":"Normal","latestUpload":"Latest Upload","earliestUpload":"Earliest Upload","daysAgo":"{count} days ago","hoursAgo":"{count} hours ago","minutesAgo":"{count} minutes ago","justNow":"Just now","cancellingRebuild":"Cancelling index rebuild..."},"sysUpload":{"title":"Upload Channel Management","titleTooltip":"Manage all upload channel configurations. Click a card to view details or edit","filterPlaceholder":"Filter channel type","addChannel":"Add Channel","loadBalance":"Load Balance","unnamedChannel":"Unnamed Channel","envVariable":"Environment Variable","noChannels":"No {type} channels","detail":"Detail","editBtn":"Edit","deleteBtn":"Delete","addDialogTitle":"Add New Channel","channelTypeLabel":"Channel Type","channelTypePlaceholder":"Select channel type","channelNameLabel":"Channel Name","channelNamePlaceholder":"Enter channel name","channelNameImmutableTip":"After creation, this becomes the unique identifier for files associated with the channel and cannot be changed","channelNameEditDisabledTip":"The channel name links uploaded files to this channel and cannot be changed","botTokenLabel":"Bot Token","botTokenPlaceholder":"Enter Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"Enter Chat ID","proxyDomain":"Proxy Domain","proxyDomainPlaceholder":"Optional, e.g.: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"e.g.: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN Domain","cdnDomainPlaceholder":"Optional. Enter the full CDN URL prefix, e.g. https://cdn.example.com","cdnDomainTip":"Optional. Can be used to generate and display file access links. Server-side file reads also try the CDN first.","bucketName":"Bucket Name","bucketNamePlaceholder":"Enter bucket name","bucketRegion":"Bucket Region","bucketRegionPlaceholder":"Default: auto","accessKeyId":"Access Key ID","accessKeyIdPlaceholder":"Enter Access Key ID","secretAccessKey":"Secret Access Key","secretAccessKeyPlaceholder":"Enter Secret Access Key","pathStyle":"Path Style","pathStyleTip":"Enable when using services incompatible with host-style like OpenList","quotaLimit":"Quota Limit","quotaLimitGB":"Quota Limit (GB)","quotaThreshold":"Disable Threshold (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"Enter Channel ID","nitroMember":"Nitro Member","nitroTip":"Nitro members: 25MB per file, otherwise 10MB","discordWarning":"Discord has API rate limits, not recommended for high-concurrency scenarios","repoName":"Repository Name","repoNamePlaceholder":"Format: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"Enter Access Token","privateRepo":"Private Repository","privateRepoTip":"Private repository limit: 100GB","webdavBaseUrl":"WebDAV Base URL","webdavBaseUrlPlaceholder":"e.g.: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"Username","webdavUsernamePlaceholder":"Optional username","webdavPassword":"Password","webdavPasswordPlaceholder":"Optional password","webdavPublicUrlPlaceholder":"Optional. Enter the full public URL prefix, e.g. https://cdn.example.com/imgbed","webdavPublicUrlTip":"Optional. Server-side file reads try this public URL first and fall back to the WebDAV API on failure.","webdavHeaders":"Custom Headers","webdavHeadersPlaceholder":"Optional JSON object, e.g.: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"Custom headers must be a valid JSON object","webdavCreateDirectory":"Auto Create Directories","webdavCreateDirectoryTip":"Create parent directories before uploading files","cancel":"Cancel","confirmAdd":"Confirm Add","detailDialogTitle":"Channel Details - {name}","channelNameDetail":"Channel Name","channelTypeDetail":"Channel Type","statusLabel":"Status","enabled":"Enabled","disabled":"Disabled","configSource":"Config Source","publicUrl":"Public Access URL","notSet":"Not Set","isPathStyle":"Yes","isNotPathStyle":"No","currentUsage":"Current Usage","closeBtn":"Close","editDialogTitle":"Edit Channel - {name}","enableChannel":"Enable Channel","saveChanges":"Save Changes","r2ConfigNote":"Please follow the R2 Channel Configuration documentation to add R2 channels","reservedName":"This name is reserved by the system, please use another name","duplicateName":"A channel with this name already exists, please use another name","fixedChannelCannotDelete":"Channels configured via environment variables cannot be deleted","deleteChannelConfirm":"Are you sure you want to delete this channel? Files still associated with it may become inaccessible.","quotaInitConfirm":"First time enabling quota requires calculating existing file sizes, this may take some time. Calculate now?","quotaInitTitle":"Initialize Quota Statistics","quotaInitConfirmBtn":"Calculate Now","quotaInitCancelBtn":"Calculate Later","quotaInitLater":"You can click the refresh button to calculate later","quotaCalculating":"Calculating quota, please wait...","quotaCalculateSuccess":"Quota calculation complete","quotaCalculateFailed":"Calculation failed","quotaCalculateError":"Calculation failed: "},"sysSecurity":{"authManagement":"Authentication Management","userAuth":"User Authentication","adminAuth":"Admin Authentication","uploadPassword":"Upload Password","confirmPassword":"Confirm Password","adminUsername":"Username","adminPassword":"Password","apiTokenManagement":"API Token Management","imageReview":"Image Review","imageReviewTooltip":"Only applies to non-chunked uploads, supports nsfwjs and moderatecontent.com channels","enableReview":"Enable Review","reviewChannel":"Review Channel","reviewChannelPlaceholder":"Select review channel","apiKey":"API Key","apiPath":"API Path","ipQuery":"IP Geolocation Query","ipQueryTooltip":"Calls a custom API during upload to query the upload IP location. Parameter values support the {\'{ip}\'} placeholder","enableIpQuery":"Enable Query","ipQueryChannel":"Query Channel","ipQueryChannelPlaceholder":"Select query channel","customApi":"Custom API","queryParams":"Query Parameters","paramNamePlaceholder":"Parameter name","paramValuePlaceholder":"Parameter value, e.g. {\'{ip}\'}","addQueryParam":"Add Parameter","responseFields":"Response Fields","responseFieldsTip":"The final display text is joined in field order","responseFieldPathPlaceholder":"JSON path, e.g. country.name","addResponseField":"Add Field","uploadManagement":"Upload Management","accessManagement":"Access Management","domainFilter":"Domain Filter","allowedDomains":"Allowed Domains","allowedDomainsTooltip":"1. Set permissions based on access domain
2. Leave empty to allow all, separate multiple domains with commas","whiteListMode":"Whitelist Mode","enableWhiteList":"Enable","enableWhiteListTooltip":"1. Set permissions based on files
2. When enabled, only whitelisted files can be accessed","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

Access URL: https://your.domain/browse/2026/lucky

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save","unsaved":"Unsaved changes","failed":"Failed to save. Please try again."},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"},"sysAI":{"edit":"Edit","editProvider":"Edit provider","editModel":"Edit model","cancel":"Cancel","confirm":"Confirm","confirmAdd":"Confirm Add","required":"{field} is required","invalidURL":"Enter a valid HTTP or HTTPS URL without credentials, query parameters or fragments.","title":"AI Settings","enable":"Enable AI","providers":"Providers","models":"Models","prompts":"Prompt Management","tagging":"Image Tag Recognition","enableTagging":"Enable recognition","name":"Name","protocol":"Protocol","keyUnchanged":"Configured; leave blank to keep the Key","enterKey":"Enter API Key","keyNotConfigured":"API Key not configured","clearKey":"Delete saved Key","enabled":"Enable provider","remove":"Remove","addProvider":"Add provider","provider":"Provider","modelName":"Model identifier","vision":"Supports images","jsonMode":"Structured output","jsonModeHint":"Prompt constraints: Request JSON through instructions for broader compatibility.\\nNative JSON object: Enable the API\'s JSON mode; provider and model support is required.","promptOnly":"Prompt constraints","nativeJsonObject":"Native JSON object","outputTokens":"Maximum output tokens","test":"Test connection","addModel":"Add model","tagPrompt":"Image tag recognition prompt","promptHint":"Available variables:","resetPrompt":"Restore built-in prompt","language":"Tag language","maxTags":"Maximum tags per image","vocabulary":"Preferred tags","vocabularyHint":"Separate with English commas (,), Chinese commas (,) or newlines, up to 100 tags","timeout":"Provider timeout (ms)","batchSize":"Maximum images per batch","concurrency":"Concurrent model calls","providerInUse":"Remove or reassign models using this provider first.","saved":"AI settings saved","testSuccess":"Connected in {ms} ms","credentialHint":"Set AI_CONFIG_SECRET to a random secret of at least 32 characters in the deployment environment. API Keys are encrypted before saving.","general":"General Settings","noProviders":"No providers yet","noModels":"No models yet"},"aiTags":{"tab":"AI Tag Recognition","hint":"Select the suggested tags to append. Existing tags are preserved.","disabled":"Image tagging is not configured","generate":"Generate","cancel":"Cancel generation","retry":"Retry","settings":"Open AI Settings","progress":"Processed {done} / {total} images","saved":"Saved","noTags":"No tags suggested","apply":"Save","indexPending":"Tags saved, but index synchronization failed. Save again to retry synchronization.","ready":"Ready to generate","selection":"{count} selected"},"adminAuthWarning":{"title":"Security Notice","message":"The admin username and password have not been configured. Please set them as soon as possible!","configure":"Open Security Settings","close":"Dismiss"},"aiErrors":{"AI_DISABLED":"Image tag recognition is disabled. Open AI Settings to enable it.","INVALID_CONFIG":"AI settings are incomplete or invalid. Check providers, models and recognition settings.","CREDENTIAL_CONFIG":"Cannot use the provider key. Check AI_CONFIG_SECRET or enter the API Key again.","CONFIG_CONFLICT":"AI settings have changed. Reload before saving.","PROVIDER_REDIRECT":"The provider endpoint redirected. Use its final Base URL.","PROVIDER_AUTH":"Provider or upstream authentication failed (HTTP 401).","PROVIDER_BLOCKED":"Provider security protection blocked the request (HTTP 403). Check firewall rules.","PROVIDER_FORBIDDEN":"The provider denied the request (HTTP 403). Check model and image input permissions.","PROVIDER_RATE_LIMIT":"The provider rate limit was reached. Try again later.","PROVIDER_ERROR":"The provider returned HTTP {status}. Check the model and endpoint.","PROVIDER_UNAVAILABLE":"Cannot connect to the provider. Check the network and Base URL.","TIMEOUT":"Recognition timed out or was cancelled. Please retry.","UNSUPPORTED_IMAGE":"Cannot process this image. Supported formats: JPEG, PNG, WebP, AVIF and GIF.","IMAGE_TOO_LARGE":"Original exceeds 20 MB; skipped.","PREVIEW_TOO_LARGE":"Image exceeds the processing limit; skipped.","INVALID_RESPONSE":"Invalid response. Please retry.","CANCELLED":"Not processed. Retry to continue.","INVALID_INPUT":"Invalid request parameters. Check your input and retry.","INVALID_FILE":"Invalid file ID.","FILE_NOT_FOUND":"The file no longer exists. Refresh the file list.","UNSUPPORTED_INPUT":"The model or file does not support image tag recognition.","INVALID_IMAGE":"The image preview is invalid or exceeds limits. Generate it again.","FILE_CHANGED":"The file has changed. Generate tags again.","INVALID_TAGS":"Tag format or count exceeds limits. Reduce or edit the tags.","METADATA_TOO_LARGE":"File metadata exceeds the KV 1 KB limit. Reduce the tags.","INPUT_TOO_LARGE":"The request exceeds size limits. Reduce the images or tags.","INTERNAL_ERROR":"Operation failed. Please try again later.","AUTH_REQUIRED":"The admin session has expired. Please log in again.","IMAGE_FETCH_FAILED":"Image retrieval failed (HTTP {status}). Check file access permissions.","HTTP_ERROR":"Request failed (HTTP {status}). Please try again later.","NETWORK_ERROR":"Request failed. Check your network and retry.","INVALID_ACTION":"Invalid tag operation.","UNSUPPORTED_CAPABILITY":"This AI capability is not supported.","METHOD_NOT_ALLOWED":"This request method is not supported.","code":"Code","type":"Type","requestId":"Request ID"}}');const l="app-locale",r="zh-CN",s=new Set(["zh-CN","en"]);function d(e){return s.has(e)?e:null}function c(){return d(localStorage.getItem(l))}function m(e){return c()||d(e)||r}const u=(0,o.hU)({legacy:!0,locale:c()||r,fallbackLocale:r,messages:{"zh-CN":n,en:i}});function p(e){u.global.locale=e,document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}function g(e){const a=m(e);return p(a),a}function h(e){const a=d(e)||r;p(a),localStorage.setItem(l,a)}var f=u},78673:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),i=t(21588),l=t(91646),r=(t(15412),t(30372),t(98950)),s=t(30292),d=t(47984),c=t(79262),m=t(70193),u=t(55363),p=t(31050),g=t(22909),h=t(10220),f=t(74036),y=t(90389),b=t(81828),T=t(27483),C=t(66806),k=t(61536),v=t(3263),A=t(57038),w=t(63416),S=t(63027),P=t(19223),I=t(93422),F=t(16249),D=t(34335),L=t(14722),N=t(16829),R=t(53916),U=t(48749),E=t(2511),M=t(12375),O=t(97619),x=t(84310),B=t(14552),_=t(79919),W=t(10767),V=t(20491),H=t(18422),q=t(17214),G=t(44845),z=t(55319),K=t(71669),j=t(38557),J=t(15925),Q=t(10798),Y=t(39329),$=t(59708),X=t(41165),Z=t(50230),ee=t(99288),ae=t(67992),te=t(37538),oe=t(13118),ne=t(36050),ie=t(69721),le=t(75192),re=t(50672),se=t(3149),de=t(11221),ce=t(73585),me=t(63236),ue=t(1860),pe=t(13110),ge=t(6246),he=t(42302),fe=t(75504),ye=t(40587),be=t(5299),Te=t(81775),Ce=t(13127),ke=t(18742),ve=t(97579),Ae=t(56746),we=t(58422),Se=t(20444),Pe=t(88502),Ie=t(21872),Fe=t(64795),De=t(82262),Le=t(88921),Ne=t(39916),Re=t(18579),Ue=t(80500),Ee=t(58428),Me=t(87849),Oe=t(78034),xe=t(59413),Be=t(58869),_e=t(79102),We=t(78337),Ve=t(38870),He=t(70577),qe=t(93212),Ge=t(40275),ze=t(52995),Ke=t(38410),je=t(167),Je=t(53223),Qe=t(97447),Ye=t(67830),$e=[u.rC,p.UH,g.B0,h.Ce,f.IN,d.xK,y.Df,b.ck,T.LB,C.e4,k.ok,v.$F,A.gK,w.e6,S.rQ,P.Jt,I.Wz,F.Xk,D.B2,L.a$,N.jB,c.ZD,R.wF,U.rO,E.jT,M.Xb,O.dB,x.Ub,B.q9,_.rM,W.jP,V.he,m._2,H.cb,q.MT,G.vH,z.v,K.bx,j.tU,J.zp,Q.A,Y.pS,$.A4,X.h8,Z.o1,ee.UD,ae.mR,te.ao,oe.Uj,ne.gD,ie.Bw,le.CY,re.In,se.v0,de.lS,ce.jb,me.yv,ue.Up,pe.iW,ge.CQ,he.IT,fe.EZ,ye.xb,be.PJ,Te.X,Ce.ji,ke.is,ve.R9,Ae.QL,we.wR,Se.oE,Pe.ye,Ie.UB,Fe.hS,De.Mj,Le.D6,Ne.QO,Re.V2,Ue.im,Ee.Gx,Me.H9,Oe.Yp,xe.z1,Be.Nf,_e.oM,We.VN,Ve.Ot,He.xi,qe._2,Ge.DX,ze.l9,Ke.GR,je.ns,Je.Be,Qe.Jm,Ye.Mc],Xe=t(97722),Ze=(t(85331),t(10961),t(9267)),ea=(t(15616),t(80047)),aa=(t(99648),t(89559)),ta=(t(85332),t(56768)),oa=t(24232);function na(e,a,t,o,n,i){const l=(0,ta.g2)("router-view"),r=aa.KR,s=ea.S2,d=Ze.kZ,c=Xe.H6;return(0,ta.uX)(),(0,ta.Wv)(c,{locale:i.elementLocale},{default:(0,ta.k6)(()=>[(0,ta.bF)(l),(0,ta.bF)(d,{modelValue:i.adminAuthWarningVisible,"onUpdate:modelValue":a[1]||(a[1]=e=>i.adminAuthWarningVisible=e),title:e.$t("adminAuthWarning.title"),width:"min(480px, 90vw)","close-on-click-modal":!1,"close-on-press-escape":!1},{footer:(0,ta.k6)(()=>[(0,ta.bF)(s,{onClick:i.openSecuritySettings},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.configure")),1)]),_:1},8,["onClick"]),(0,ta.bF)(s,{type:"primary",onClick:a[0]||(a[0]=a=>e.$store.commit("dismissAdminAuthWarning"))},{default:(0,ta.k6)(()=>[(0,ta.eW)((0,oa.v_)(e.$t("adminAuthWarning.close")),1)]),_:1})]),default:(0,ta.k6)(()=>[(0,ta.bF)(r,{title:e.$t("adminAuthWarning.message"),type:"warning","show-icon":"",closable:!1,class:"admin-auth-warning-message"},null,8,["title"])]),_:1},8,["modelValue","title"])]),_:1},8,["locale"])}t(44114);var ia=t(60782),la=t(6166),ra=t(55186),sa=t(54791),da={data(){return{osInstance:null,imageViewerObserver:null}},computed:{adminAuthWarningVisible:{get(){return this.$store.state.adminAuthWarningVisible},set(e){e||this.$store.commit("dismissAdminAuthWarning")}},...(0,ia.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ra.A:sa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{openSecuritySettings(){this.$store.commit("dismissAdminAuthWarning"),this.$router.push("/systemConfig#security")},initOverlayScrollbars(){try{if(la.ae.valid(document.body))return void(this.osInstance=(0,la.ae)(document.body));this.osInstance=(0,la.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},ca=t(71241);const ma=(0,ca.A)(da,[["render",na],["__scopeId","data-v-d5214426"]]);var ua=ma,pa=t(16915),ga=t(25507),ha=t(46638),fa=t(57477);t(21862),t(50635);r.Yv.add(...$e),i.k.offset=30;const ya=(0,o.Ef)(ua),ba=(0,n.Zf)();ya.component("font-awesome-icon",s.gc);for(const[Aa,wa]of Object.entries(fa))ya.component(Aa,wa);const Ta=()=>{const e=document.documentElement;let a;if(ga.A.state.cusDarkMode&&null!==ga.A.state.useDarkMode)a=ga.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}ga.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},Ca=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},ka=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},va=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),i=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",i.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",i.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",i.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(i)};ga.A.dispatch("fetchUserConfig").then(()=>{(0,ha.BY)(ga.A.getters.userConfig?.defaultLanguage),Ta(),ka(ga.A.getters.userConfig),va(ga.A.state.useDarkMode,ga.A.getters.userConfig),ga.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&ga.A.state.cusDarkMode&&(Ca(a.useDarkMode),va(a.useDarkMode,ga.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(Ta(),va(ga.A.state.useDarkMode,ga.A.getters.userConfig))}),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),(0,ha.BY)(),ya.use(ga.A).use(pa.A).use(l.A).use(ha.Ay).use(ba).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var i=a[o]={exports:{}};return e[o].call(i.exports,i,i.exports,t),i.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,i){if(!o){var l=1/0;for(c=0;c=i)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[o,n,i]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{126:"844eba4a",223:"73628f82",380:"94df9ff7",385:"4d3f7ac7",502:"ff024e4c",540:"8854b4d5",711:"936a7109",730:"1feabc6e",773:"f0780366",787:"d0dbc2dd",895:"df959629",903:"1e4b549d",990:"e04c4ad6"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{126:"8d4195f5",173:"36158ceb",223:"6b74609d",385:"4f25fc20",502:"7f4cb9f9",581:"01652a63",711:"1a30de22",730:"a3834df3",773:"147d098d",787:"448a9124",860:"3febd367",895:"8e8c127b",990:"a3834df3"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,i,l){if(e[o])e[o].push(n);else{var r,s;if(void 0!==i)for(var d=document.getElementsByTagName("script"),c=0;c {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\n store.commit('beginAdminAccess', { required: false, fresh: !['dashboard', 'systemConfig', 'customerConfig'].includes(from.name) })\n store.commit('setAdminLoggedIn', true)\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\n store.commit('beginAdminAccess', { required: true, fresh: false })\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\n adminAccessStarted: false,\n adminAuthWarningVisible: false,\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\n state.adminLoggedIn = loggedIn;\n if (!loggedIn) {\n state.adminAccessStarted = false;\n state.adminAuthWarningVisible = false;\n }\n },\n beginAdminAccess(state, { required, fresh }) {\n if (!required && (fresh || !state.adminAccessStarted)) state.adminAuthWarningVisible = true;\n state.adminAccessStarted = true;\n },\n dismissAdminAuthWarning(state) {\n state.adminAuthWarningVisible = false;\n },\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\nconst FALLBACK_LOCALE = 'zh-CN'\r\nconst SUPPORTED_LOCALES = new Set(['zh-CN', 'en'])\r\n\r\nfunction normalizeLocale(locale) {\r\n return SUPPORTED_LOCALES.has(locale) ? locale : null\r\n}\r\n\r\nfunction getStoredLocale() {\r\n return normalizeLocale(localStorage.getItem(LOCALE_KEY))\r\n}\r\n\r\nexport function resolveInitialLocale(defaultLocale) {\r\n return getStoredLocale() || normalizeLocale(defaultLocale) || FALLBACK_LOCALE\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale() || FALLBACK_LOCALE,\r\n fallbackLocale: FALLBACK_LOCALE,\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nfunction applyLocale(locale) {\r\n i18n.global.locale = locale\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport function initializeLocale(defaultLocale) {\r\n const locale = resolveInitialLocale(defaultLocale)\r\n applyLocale(locale)\r\n return locale\r\n}\r\n\r\nexport function setLocale(locale) {\r\n const normalizedLocale = normalizeLocale(locale) || FALLBACK_LOCALE\r\n applyLocale(normalizedLocale)\r\n localStorage.setItem(LOCALE_KEY, normalizedLocale)\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view), _createVNode(_component_el_dialog, {\n modelValue: $options.adminAuthWarningVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.adminAuthWarningVisible = $event),\n title: _ctx.$t('adminAuthWarning.title'),\n width: 'min(480px, 90vw)',\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.openSecuritySettings\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.configure')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$store.commit('dismissAdminAuthWarning'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.close')), 1)]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_alert, {\n title: _ctx.$t('adminAuthWarning.message'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"admin-auth-warning-message\"\n }, null, 8, [\"title\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])]),\n _: 1\n }, 8, [\"locale\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n adminAuthWarningVisible: {\n get() {\n return this.$store.state.adminAuthWarningVisible;\n },\n set(value) {\n if (!value) this.$store.commit('dismissAdminAuthWarning');\n }\n },\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n openSecuritySettings() {\n this.$store.commit('dismissAdminAuthWarning');\n this.$router.push('/systemConfig#security');\n },\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=d5214426&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=d5214426&scoped=true&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5214426\"]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus, { messageConfig } from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n, { initializeLocale } from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\n// 保留首条消息的顶部间距,同时允许 Element Plus 动态计算后续消息的位置。\r\nmessageConfig.offset = 30;\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 优先恢复用户选择;没有持久化选择时使用网页默认语言\r\n initializeLocale(store.getters.userConfig?.defaultLanguage);\r\n\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n initializeLocale();\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"126\":\"844eba4a\",\"168\":\"16edcf49\",\"223\":\"73628f82\",\"380\":\"94df9ff7\",\"385\":\"4d3f7ac7\",\"502\":\"ff024e4c\",\"540\":\"8854b4d5\",\"711\":\"936a7109\",\"730\":\"1feabc6e\",\"773\":\"f0780366\",\"787\":\"b5df6f2f\",\"903\":\"1e4b549d\",\"990\":\"e04c4ad6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"126\":\"8d4195f5\",\"168\":\"448a9124\",\"173\":\"36158ceb\",\"223\":\"6b74609d\",\"385\":\"4f25fc20\",\"502\":\"7f4cb9f9\",\"581\":\"01652a63\",\"711\":\"1a30de22\",\"730\":\"a3834df3\",\"773\":\"147d098d\",\"787\":\"176e498b\",\"860\":\"3febd367\",\"990\":\"a3834df3\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"126\":1,\"168\":1,\"173\":1,\"223\":1,\"385\":1,\"502\":1,\"581\":1,\"711\":1,\"730\":1,\"773\":1,\"787\":1,\"860\":1,\"990\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(173|581|860)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(78673); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","required","fresh","includes","name","valid","authType","wasLoggedIn","state","adminLoggedIn","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","adminAccessStarted","adminAuthWarningVisible","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","beginAdminAccess","dismissAdminAuthWarning","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","FALLBACK_LOCALE","SUPPORTED_LOCALES","Set","normalizeLocale","locale","has","getStoredLocale","resolveInitialLocale","defaultLocale","createI18n","legacy","fallbackLocale","messages","zhCN","en","applyLocale","document","documentElement","lang","initializeLocale","setLocale","normalizedLocale","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_alert","_component_el_button","_component_el_dialog","_component_el_config_provider","elementLocale","default","modelValue","$event","title","$t","width","footer","onClick","openSecuritySettings","_","type","$store","closable","class","osInstance","imageViewerObserver","computed","this","set","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","$router","push","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","messageConfig","offset","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","defaultLanguage","subscribe","mutation","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/app.c870e592.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/locales/index.js","webpack://sanyue_imghub/./src/utils/fontawesomeIcons.js","webpack://sanyue_imghub/./src/App.vue?3f2a","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n withCredentials: true, // 始终携带 Cookie(HttpOnly session cookie)\r\n});\r\n\r\nexport default instance;\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\nimport i18n from '@/locales'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\n store.commit('beginAdminAccess', { required: false, fresh: !['dashboard', 'systemConfig', 'customerConfig'].includes(from.name) })\n store.commit('setAdminLoggedIn', true)\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\n store.commit('beginAdminAccess', { required: true, fresh: false })\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\n adminAccessStarted: false,\n adminAuthWarningVisible: false,\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\n state.adminLoggedIn = loggedIn;\n if (!loggedIn) {\n state.adminAccessStarted = false;\n state.adminAuthWarningVisible = false;\n }\n },\n beginAdminAccess(state, { required, fresh }) {\n if (!required && (fresh || !state.adminAccessStarted)) state.adminAuthWarningVisible = true;\n state.adminAccessStarted = true;\n },\n dismissAdminAuthWarning(state) {\n state.adminAuthWarningVisible = false;\n },\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\nconst FALLBACK_LOCALE = 'zh-CN'\r\nconst SUPPORTED_LOCALES = new Set(['zh-CN', 'en'])\r\n\r\nfunction normalizeLocale(locale) {\r\n return SUPPORTED_LOCALES.has(locale) ? locale : null\r\n}\r\n\r\nfunction getStoredLocale() {\r\n return normalizeLocale(localStorage.getItem(LOCALE_KEY))\r\n}\r\n\r\nexport function resolveInitialLocale(defaultLocale) {\r\n return getStoredLocale() || normalizeLocale(defaultLocale) || FALLBACK_LOCALE\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale() || FALLBACK_LOCALE,\r\n fallbackLocale: FALLBACK_LOCALE,\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nfunction applyLocale(locale) {\r\n i18n.global.locale = locale\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport function initializeLocale(defaultLocale) {\r\n const locale = resolveInitialLocale(defaultLocale)\r\n applyLocale(locale)\r\n return locale\r\n}\r\n\r\nexport function setLocale(locale) {\r\n const normalizedLocale = normalizeLocale(locale) || FALLBACK_LOCALE\r\n applyLocale(normalizedLocale)\r\n localStorage.setItem(LOCALE_KEY, normalizedLocale)\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view), _createVNode(_component_el_dialog, {\n modelValue: $options.adminAuthWarningVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.adminAuthWarningVisible = $event),\n title: _ctx.$t('adminAuthWarning.title'),\n width: 'min(480px, 90vw)',\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.openSecuritySettings\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.configure')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$store.commit('dismissAdminAuthWarning'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('adminAuthWarning.close')), 1)]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_alert, {\n title: _ctx.$t('adminAuthWarning.message'),\n type: \"warning\",\n \"show-icon\": \"\",\n closable: false,\n class: \"admin-auth-warning-message\"\n }, null, 8, [\"title\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])]),\n _: 1\n }, 8, [\"locale\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n adminAuthWarningVisible: {\n get() {\n return this.$store.state.adminAuthWarningVisible;\n },\n set(value) {\n if (!value) this.$store.commit('dismissAdminAuthWarning');\n }\n },\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n openSecuritySettings() {\n this.$store.commit('dismissAdminAuthWarning');\n this.$router.push('/systemConfig#security');\n },\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=d5214426&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=d5214426&scoped=true&lang=css\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d5214426\"]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus, { messageConfig } from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n, { initializeLocale } from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\n// 保留首条消息的顶部间距,同时允许 Element Plus 动态计算后续消息的位置。\r\nmessageConfig.offset = 30;\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 优先恢复用户选择;没有持久化选择时使用网页默认语言\r\n initializeLocale(store.getters.userConfig?.defaultLanguage);\r\n\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n initializeLocale();\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"126\":\"844eba4a\",\"223\":\"73628f82\",\"380\":\"94df9ff7\",\"385\":\"4d3f7ac7\",\"502\":\"ff024e4c\",\"540\":\"8854b4d5\",\"711\":\"936a7109\",\"730\":\"1feabc6e\",\"773\":\"f0780366\",\"787\":\"d0dbc2dd\",\"895\":\"df959629\",\"903\":\"1e4b549d\",\"990\":\"e04c4ad6\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"126\":\"8d4195f5\",\"173\":\"36158ceb\",\"223\":\"6b74609d\",\"385\":\"4f25fc20\",\"502\":\"7f4cb9f9\",\"581\":\"01652a63\",\"711\":\"1a30de22\",\"730\":\"a3834df3\",\"773\":\"147d098d\",\"787\":\"448a9124\",\"860\":\"3febd367\",\"895\":\"8e8c127b\",\"990\":\"a3834df3\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"126\":1,\"173\":1,\"223\":1,\"385\":1,\"502\":1,\"581\":1,\"711\":1,\"730\":1,\"773\":1,\"787\":1,\"860\":1,\"895\":1,\"990\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(173|581|860)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(78673); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","required","fresh","includes","name","valid","authType","wasLoggedIn","state","adminLoggedIn","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","adminAccessStarted","adminAuthWarningVisible","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","beginAdminAccess","dismissAdminAuthWarning","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","FALLBACK_LOCALE","SUPPORTED_LOCALES","Set","normalizeLocale","locale","has","getStoredLocale","resolveInitialLocale","defaultLocale","createI18n","legacy","fallbackLocale","messages","zhCN","en","applyLocale","document","documentElement","lang","initializeLocale","setLocale","normalizedLocale","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_alert","_component_el_button","_component_el_dialog","_component_el_config_provider","elementLocale","default","modelValue","$event","title","$t","width","footer","onClick","openSecuritySettings","_","type","$store","closable","class","osInstance","imageViewerObserver","computed","this","set","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","$router","push","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","messageConfig","offset","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","defaultLanguage","subscribe","mutation","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.c870e592.js.map.gz b/frontend-dist/js/app.c870e592.js.map.gz new file mode 100644 index 0000000..21605ff Binary files /dev/null and b/frontend-dist/js/app.c870e592.js.map.gz differ diff --git a/functions/api/manage/ai/tags.js b/functions/api/manage/ai/tags.js index f24301d..eee1571 100644 --- a/functions/api/manage/ai/tags.js +++ b/functions/api/manage/ai/tags.js @@ -1,7 +1,7 @@ import { createAIContext } from '../../../utils/ai/index.js'; import { getDatabase } from '../../../utils/databaseAdapter.js'; import { APIError, json, readBoundedBody, errorResult, errorResponse } from '../../../utils/apiResponse.js'; -import { validateFileId, fileIdentity } from '../../../services/tags.js'; +import { validateFileId, fileIdentity } from '../../../utils/tagService.js'; const MAX_IMAGE_BYTES = 256 * 1024; const ORIGINAL_TYPES = new Set(['image/jpeg', 'image/png', 'image/webp', 'image/avif', 'image/gif']); diff --git a/functions/api/manage/tags/[[path]].js b/functions/api/manage/tags/[[path]].js index 5759fe1..3ef8636 100644 --- a/functions/api/manage/tags/[[path]].js +++ b/functions/api/manage/tags/[[path]].js @@ -1,5 +1,5 @@ import { getDatabase } from "../../../utils/databaseAdapter.js"; -import { applyTagItems, validateFileId } from "../../../services/tags.js"; +import { applyTagItems, validateFileId } from "../../../utils/tagService.js"; import { APIError, json, readJSON, errorResponse } from "../../../utils/apiResponse.js"; export async function onRequest(context) { diff --git a/functions/api/manage/tags/apply.js b/functions/api/manage/tags/apply.js index 91e6eb4..32a5ac5 100644 --- a/functions/api/manage/tags/apply.js +++ b/functions/api/manage/tags/apply.js @@ -1,4 +1,4 @@ -import { applyTagItems } from '../../../services/tags.js'; +import { applyTagItems } from '../../../utils/tagService.js'; import { APIError, json, readJSON, errorResponse } from '../../../utils/apiResponse.js'; export async function onRequestPost(context) { diff --git a/functions/api/manage/tags/batch.js b/functions/api/manage/tags/batch.js index a3e7769..669484e 100644 --- a/functions/api/manage/tags/batch.js +++ b/functions/api/manage/tags/batch.js @@ -1,4 +1,4 @@ -import { applyTagItems } from "../../../services/tags.js"; +import { applyTagItems } from "../../../utils/tagService.js"; import { APIError, json, readJSON, errorResponse } from "../../../utils/apiResponse.js"; export async function onRequestPost(context) { diff --git a/functions/services/tags.js b/functions/utils/tagService.js similarity index 93% rename from functions/services/tags.js rename to functions/utils/tagService.js index 6bbdff6..bf495e8 100644 --- a/functions/services/tags.js +++ b/functions/utils/tagService.js @@ -1,9 +1,9 @@ -import { getDatabase } from '../utils/databaseAdapter.js'; -import { batchAddFilesToIndex } from '../utils/indexManager.js'; -import { cleanPersistedMetadata } from '../utils/metadata/metadataSecurity.js'; -import { mergeTags, validateTag } from '../utils/tagHelpers.js'; -import { purgePublicFileListCache, purgeRandomFileListCache } from '../utils/purgeCache.js'; -import { APIError, errorResult } from '../utils/apiResponse.js'; +import { getDatabase } from './databaseAdapter.js'; +import { batchAddFilesToIndex } from './indexManager.js'; +import { cleanPersistedMetadata } from './metadata/metadataSecurity.js'; +import { mergeTags, validateTag } from './tagHelpers.js'; +import { purgePublicFileListCache, purgeRandomFileListCache } from './purgeCache.js'; +import { APIError, errorResult } from './apiResponse.js'; const encoder = new TextEncoder(); export function validateFileId(fileId) {