From ba18820b3759c445452fd1f5c3cc8ff8e033bcaf Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Mon, 29 Jun 2026 22:48:28 +0800 Subject: [PATCH] style: align dashboard breadcrumb controls --- .gitignore | 3 ++- .../{528.9607928c.css => 528.4c6718b2.css} | 0 ...28.9607928c.css.gz => 528.4c6718b2.css.gz} | Bin .../{776.fd98f5b9.css => 770.4b3a009b.css} | 2 +- ...76.fd98f5b9.css.gz => 770.4b3a009b.css.gz} | Bin 14125 -> 14165 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 521 -> 517 bytes frontend-dist/js/770.865557c0.js | 2 ++ frontend-dist/js/770.865557c0.js.gz | Bin 0 -> 57686 bytes frontend-dist/js/770.865557c0.js.map | 1 + frontend-dist/js/770.865557c0.js.map.gz | Bin 0 -> 145433 bytes frontend-dist/js/776.74ad0ae6.js | 2 -- frontend-dist/js/776.74ad0ae6.js.gz | Bin 58054 -> 0 bytes frontend-dist/js/776.74ad0ae6.js.map | 1 - frontend-dist/js/776.74ad0ae6.js.map.gz | Bin 144563 -> 0 bytes frontend-dist/js/app.26976a82.js.gz | Bin 25162 -> 0 bytes frontend-dist/js/app.26976a82.js.map.gz | Bin 18557 -> 0 bytes .../js/{app.26976a82.js => app.a0aaebef.js} | 4 ++-- frontend-dist/js/app.a0aaebef.js.gz | Bin 0 -> 25163 bytes ...pp.26976a82.js.map => app.a0aaebef.js.map} | 2 +- frontend-dist/js/app.a0aaebef.js.map.gz | Bin 0 -> 18558 bytes 21 files changed, 10 insertions(+), 9 deletions(-) rename frontend-dist/css/{528.9607928c.css => 528.4c6718b2.css} (100%) rename frontend-dist/css/{528.9607928c.css.gz => 528.4c6718b2.css.gz} (100%) rename frontend-dist/css/{776.fd98f5b9.css => 770.4b3a009b.css} (82%) rename frontend-dist/css/{776.fd98f5b9.css.gz => 770.4b3a009b.css.gz} (83%) create mode 100644 frontend-dist/js/770.865557c0.js create mode 100644 frontend-dist/js/770.865557c0.js.gz create mode 100644 frontend-dist/js/770.865557c0.js.map create mode 100644 frontend-dist/js/770.865557c0.js.map.gz delete mode 100644 frontend-dist/js/776.74ad0ae6.js delete mode 100644 frontend-dist/js/776.74ad0ae6.js.gz delete mode 100644 frontend-dist/js/776.74ad0ae6.js.map delete mode 100644 frontend-dist/js/776.74ad0ae6.js.map.gz delete mode 100644 frontend-dist/js/app.26976a82.js.gz delete mode 100644 frontend-dist/js/app.26976a82.js.map.gz rename frontend-dist/js/{app.26976a82.js => app.a0aaebef.js} (99%) create mode 100644 frontend-dist/js/app.a0aaebef.js.gz rename frontend-dist/js/{app.26976a82.js.map => app.a0aaebef.js.map} (99%) create mode 100644 frontend-dist/js/app.a0aaebef.js.map.gz diff --git a/.gitignore b/.gitignore index 2e734483..05296a6a 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ node_modules .kiro/ .vscode/ -.claude/ \ No newline at end of file +.claude/ +.agents/ \ No newline at end of file diff --git a/frontend-dist/css/528.9607928c.css b/frontend-dist/css/528.4c6718b2.css similarity index 100% rename from frontend-dist/css/528.9607928c.css rename to frontend-dist/css/528.4c6718b2.css diff --git a/frontend-dist/css/528.9607928c.css.gz b/frontend-dist/css/528.4c6718b2.css.gz similarity index 100% rename from frontend-dist/css/528.9607928c.css.gz rename to frontend-dist/css/528.4c6718b2.css.gz diff --git a/frontend-dist/css/776.fd98f5b9.css b/frontend-dist/css/770.4b3a009b.css similarity index 82% rename from frontend-dist/css/776.fd98f5b9.css rename to frontend-dist/css/770.4b3a009b.css index 72a31f31..4864747d 100644 --- a/frontend-dist/css/776.fd98f5b9.css +++ b/frontend-dist/css/770.4b3a009b.css @@ -1 +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-768efd1f]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-768efd1f]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-768efd1f]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-768efd1f]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(56,189,248,.12),rgba(14,165,233,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-768efd1f]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-768efd1f]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,#38bdf8,rgba(14,165,233,.5));border-radius:2px}.mobile-drawer-close[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-768efd1f]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-768efd1f]{background:linear-gradient(135deg,rgba(56,189,248,.2),rgba(14,165,233,.12));color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-768efd1f]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-768efd1f]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-768efd1f]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-768efd1f]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-768efd1f]{animation:slideInLeft-768efd1f .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-768efd1f]{animation:slideOutLeft-768efd1f .2s ease-in}.drawer-slide-enter-from[data-v-768efd1f],.drawer-slide-leave-to[data-v-768efd1f]{opacity:0}@keyframes slideInLeft-768efd1f{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-768efd1f{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-62bb601c]{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-62bb601c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-62bb601c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-62bb601c]{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-62bb601c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-62bb601c]{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}html.dark .bottom-sheet-title[data-v-62bb601c]{color:#f0f0f0}.bottom-sheet-content[data-v-62bb601c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-62bb601c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-62bb601c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-62bb601c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-62bb601c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-62bb601c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-62bb601c],.bottom-sheet-danger[data-v-62bb601c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-62bb601c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-62bb601c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-62bb601c]{animation:slideUp-62bb601c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-62bb601c]{animation:slideDown-62bb601c .2s ease-in}.bottom-sheet-enter-from[data-v-62bb601c],.bottom-sheet-leave-to[data-v-62bb601c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-62bb601c],.bottom-sheet-leave-to .bottom-sheet[data-v-62bb601c]{transform:translateY(100%)}@keyframes slideUp-62bb601c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-62bb601c{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-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-ec3adcfc]{padding:0}.tab-content[data-v-ec3adcfc]{padding:20px}.tab-description[data-v-ec3adcfc]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-ec3adcfc]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-ec3adcfc]{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-ec3adcfc]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-ec3adcfc]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-ec3adcfc],.tags-to-add-section[data-v-ec3adcfc]{margin-bottom:20px}.common-tags-section h4[data-v-ec3adcfc],.tags-to-add-section h4[data-v-ec3adcfc]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-ec3adcfc]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-ec3adcfc]{cursor:default}.empty-message[data-v-ec3adcfc]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-ec3adcfc]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-689f94e2]{padding:10px 0}.input-section[data-v-689f94e2]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-689f94e2]{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-689f94e2]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-689f94e2]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-689f94e2],.popular-tags-section[data-v-689f94e2]{margin-bottom:20px}.current-tags-section h4[data-v-689f94e2],.popular-tags-section h4[data-v-689f94e2]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-689f94e2]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-689f94e2]{cursor:default}.tag-item.clickable[data-v-689f94e2]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-689f94e2]:hover{transform:translateY(-2px)}.empty-message[data-v-689f94e2]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-689f94e2]{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-3f80812c]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-3f80812c]{margin-left:0!important}.video-preview[data-v-3f80812c]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-3f80812c],.video-preview[data-v-3f80812c]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-3f80812c]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-3f80812c] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-3f80812c]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-3f80812c]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border-radius:8px;min-height:60px}.preview-content[data-v-3f80812c]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-3f80812c] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-3f80812c] .el-descriptions__content .el-tag,[data-v-3f80812c] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-3f80812c] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-3f80812c] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-3f80812c]{justify-content:center}}.batch-floating-bar[data-v-7445695a]{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:7px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.batch-selection-summary[data-v-7445695a]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-7445695a]{min-width:20px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-container-color);font-size:15px;font-weight:650;line-height:1}.batch-toolbar-divider[data-v-7445695a]{width:1px;height:20px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-7445695a]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-7445695a]{width:38px;height:38px;min-width:38px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-7445695a]:hover{transform:translateY(-2px);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.copy[data-v-7445695a]{color:var(--admin-batch-copy-color)}.batch-floating-btn.danger[data-v-7445695a]{color:var(--admin-batch-delete-color)}.batch-floating-btn.download[data-v-7445695a]{color:var(--admin-batch-download-color)}.batch-floating-btn.move[data-v-7445695a]{color:var(--admin-batch-move-color)}.batch-floating-btn.tag[data-v-7445695a]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ban[data-v-7445695a]{color:var(--admin-batch-ban-color)}.batch-floating-btn.white[data-v-7445695a]{color:var(--admin-batch-white-color)}.batch-floating-btn.ghost[data-v-7445695a]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-7445695a]{width:16px;margin-right:0}.batch-toolbar-enter-active[data-v-7445695a],.batch-toolbar-leave-active[data-v-7445695a]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-7445695a],.batch-toolbar-leave-to[data-v-7445695a]{opacity:0;transform:translateX(-50%) translateY(16px) scale(.98)}.batch-toolbar-enter-to[data-v-7445695a],.batch-toolbar-leave-from[data-v-7445695a]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-7445695a]{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:5px;padding:7px;border-radius:999px}.batch-selection-summary[data-v-7445695a]{padding:0 1px}.batch-selection-count[data-v-7445695a]{min-width:18px;height:24px;padding:0 3px;font-size:13px}.batch-toolbar-divider[data-v-7445695a]{height:18px}.batch-floating-actions[data-v-7445695a]{flex:1;min-width:0;gap:5px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-7445695a]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-7445695a]{width:34px;height:34px;min-width:34px;padding:0;border-radius:50%}.batch-floating-icon[data-v-7445695a]{margin-right:0;width:14px}.batch-toolbar-enter-from[data-v-7445695a],.batch-toolbar-leave-to[data-v-7445695a]{transform:translateX(-50%) translateY(16px) scale(.98)}.batch-toolbar-enter-to[data-v-7445695a],.batch-toolbar-leave-from[data-v-7445695a]{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-78d34f50]{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-78d34f50]:last-child{border-bottom:none}.list-item[data-v-78d34f50]:hover{background:var(--el-fill-color-light)}.list-col[data-v-78d34f50]{display:flex;align-items:center}.list-col-checkbox[data-v-78d34f50]{justify-content:center;min-width:40px}.list-col-preview[data-v-78d34f50]{justify-content:center;cursor:pointer}.list-col-name[data-v-78d34f50]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-78d34f50]:hover{color:#38bdf8}.filename-ellipsis[data-v-78d34f50]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-78d34f50]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-78d34f50]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-78d34f50],.list-col-channel[data-v-78d34f50],.list-col-date[data-v-78d34f50],.list-col-size[data-v-78d34f50]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-78d34f50]{font-size:13px}.address-box[data-v-78d34f50],.channel-name-box[data-v-78d34f50]{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-78d34f50]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-78d34f50]{width:70px}.address-box[data-v-78d34f50]::-webkit-scrollbar,.channel-name-box[data-v-78d34f50]::-webkit-scrollbar{display:none}.list-col-tags[data-v-78d34f50]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-78d34f50]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-78d34f50]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-78d34f50]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-78d34f50]{font-size:10px;color:#fff}.color-tag[data-v-78d34f50]{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-78d34f50]{min-width:30px;text-align:center}.list-empty[data-v-78d34f50]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-78d34f50]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-78d34f50]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-78d34f50]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-78d34f50]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-78d34f50]{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-78d34f50]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-78d34f50]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-78d34f50]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-78d34f50],.list-col-channel-name[data-v-78d34f50],.list-col-channel[data-v-78d34f50],.list-col-date[data-v-78d34f50],.list-col-size[data-v-78d34f50],.list-col-tags[data-v-78d34f50]{display:none}.list-col-actions[data-v-78d34f50]{gap:4px}.list-action-btn[data-v-78d34f50]{width:28px;height:28px}.list-col-checkbox[data-v-78d34f50]{width:24px;min-width:24px}}.img-card[data-v-e367e94e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e367e94e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e367e94e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e367e94e]:hover{transform:scale(1.05)}.image-preview[data-v-e367e94e],.video-preview[data-v-e367e94e]{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-e367e94e]{cursor:pointer}.img-card:hover .file-icon[data-v-e367e94e],.img-card:hover .image-preview[data-v-e367e94e],.img-card:hover .video-preview[data-v-e367e94e]{transform:scale(1.03)}.image-preview[data-v-e367e94e]:hover{opacity:.8}.file-short-info[data-v-e367e94e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-e367e94e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-e367e94e],.success-tag[data-v-e367e94e]{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);backdrop-filter:blur(4px)}.fail-tag[data-v-e367e94e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-e367e94e]{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);backdrop-filter:blur(4px)}.file-preview[data-v-e367e94e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-e367e94e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-e367e94e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-e367e94e]{cursor:pointer}.card-bottom-overlay[data-v-e367e94e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));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-e367e94e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e367e94e]{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-e367e94e]{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-e367e94e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e367e94e],.action-bar-right[data-v-e367e94e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e367e94e]{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-e367e94e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e367e94e]:active{transform:scale(.95)}.action-btn-danger[data-v-e367e94e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-e367e94e]{display:none!important}}@keyframes skeleton-shimmer-e367e94e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-e367e94e]{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-e367e94e 1.5s ease-in-out infinite}.error-wrapper[data-v-e367e94e]{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-e367e94e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-e367e94e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-5f22ef48]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-5f22ef48] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-5f22ef48] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-5f22ef48]:hover{transform:scale(1.05)}.folder-card[data-v-5f22ef48]{cursor:pointer}.folder-icon[data-v-5f22ef48]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-5f22ef48]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-5f22ef48]{transform:scale(1.03)}.card-bottom-overlay[data-v-5f22ef48]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));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-5f22ef48]{display:flex;align-items:center;justify-content:center}.file-name[data-v-5f22ef48]{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-5f22ef48]{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-5f22ef48]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-5f22ef48],.action-bar-right[data-v-5f22ef48]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-5f22ef48]{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-5f22ef48]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-5f22ef48]:active{transform:scale(.95)}.action-btn-danger[data-v-5f22ef48]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-5f22ef48]{display:none!important}}@keyframes skeleton-shimmer-5060702c{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-5060702c{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-5060702c]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-info[data-v-5060702c]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-list-item[data-v-5060702c]{animation:skeleton-pulse-5060702c 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-5060702c]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-long[data-v-5060702c]{width:80%}.skeleton-text-long[data-v-5060702c],.skeleton-text-short[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-short[data-v-5060702c]{width:60px}.skeleton-text-tiny[data-v-5060702c]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-5060702c],.skeleton-text-tiny[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-tag[data-v-5060702c]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-5060702c]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-5060702c]{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-5060702c]{display:flex;align-items:center}.list-col-checkbox[data-v-5060702c],.list-col-preview[data-v-5060702c]{justify-content:center}@media (max-width:768px){.list-item[data-v-5060702c]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-5060702c],.list-col-channel-name[data-v-5060702c],.list-col-channel[data-v-5060702c],.list-col-date[data-v-5060702c],.list-col-size[data-v-5060702c],.list-col-tags[data-v-5060702c]{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-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-c3aeeea0]{flex-shrink:0}.filter-trigger[data-v-c3aeeea0]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-c3aeeea0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-c3aeeea0]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-c3aeeea0] .el-badge__content{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-c3aeeea0]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-c3aeeea0]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-c3aeeea0]:last-of-type{border-bottom:none}.filter-title[data-v-c3aeeea0]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-c3aeeea0],.filter-options[data-v-c3aeeea0] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-c3aeeea0] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-c3aeeea0] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-c3aeeea0]{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-c3aeeea0]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-c3aeeea0]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-c3aeeea0]{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-c3aeeea0]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-c3aeeea0]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-c3aeeea0]{min-width:160px;max-height:320px}.filter-section[data-v-c3aeeea0]{padding:6px 10px}.filter-title[data-v-c3aeeea0]{font-size:11px;margin-bottom:4px}.filter-options[data-v-c3aeeea0] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:12px}.header-icon[data-v-c3aeeea0]{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-4e00471a]{display:flex;align-items:center;justify-content:center;gap:8px}.title[data-v-4e00471a]{display:flex;align-items:center;gap:8px;font-size:1.1em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:5px 12px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4e00471a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4e00471a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4e00471a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4e00471a]{cursor:pointer;font-size:1.3em;transition:all .3s ease;color:var(--admin-container-color);padding:5px 8px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4e00471a],.tabs-dropdown-link[data-v-4e00471a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.tabs[data-v-4e00471a]{gap:6px}.title[data-v-4e00471a]{font-size:1em;padding:3px 8px;gap:5px}.tabs-dropdown-link[data-v-4e00471a]{font-size:1.1em;padding:3px 6px}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px}.container[data-v-34570adb]{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-34570adb] .el-container,[data-v-34570adb] .el-main{overflow:visible}[data-v-34570adb] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-34570adb]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-34570adb]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-34570adb]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-34570adb]{font-size:.95em}.header-content .actions[data-v-34570adb]{gap:10px}.search-card[data-v-34570adb] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-34570adb] .el-input__wrapper{padding:0 10px}.search-card[data-v-34570adb] .el-input__inner:focus{width:65vw}}.header-content[data-v-34570adb]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-34570adb]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-34570adb]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-34570adb]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-34570adb]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-select-button[data-v-34570adb]{width:32px;height:32px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--el-border-color-lighter);border-radius:6px;color:#38bdf8;background:var(--el-fill-color-light);box-shadow:var(--admin-dashboard-stats-shadow);cursor:pointer;transition:transform .2s ease,color .2s ease,background-color .2s ease,box-shadow .2s ease}.breadcrumb-select-button[data-v-34570adb]:hover{color:var(--admin-purple);transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-select-icon[data-v-34570adb]{font-size:14px}@media (max-width:768px){.breadcrumb-container[data-v-34570adb]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-select-button[data-v-34570adb]{width:28px;height:28px;border-radius:8px}.breadcrumb-select-icon[data-v-34570adb]{font-size:12px}}.stats-badge[data-v-34570adb]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-34570adb]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-34570adb]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-34570adb]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-34570adb]{font-size:9px}}.header-content .actions[data-v-34570adb]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-34570adb]{margin-top:10px}}.header-content .actions i[data-v-34570adb]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-34570adb]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-34570adb]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-34570adb]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-34570adb]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-34570adb]{color:var(--admin-purple)}.search-area[data-v-34570adb]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-34570adb]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-34570adb]{display:flex;align-items:center}.search-card[data-v-34570adb] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-34570adb] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-34570adb] .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-34570adb] .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-34570adb] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-34570adb] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-34570adb] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-34570adb] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-34570adb] .el-input__inner:focus{width:55vw}}.search-icon[data-v-34570adb]{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-34570adb]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-34570adb]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-34570adb] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-34570adb]{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-34570adb]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-34570adb]{margin-top:12vh}.main-container.has-batch-toolbar[data-v-34570adb]{padding-bottom:86px}}.content[data-v-34570adb]{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-34570adb],.list-view.is-drag-selecting[data-v-34570adb]{cursor:crosshair}.content.is-drag-selecting[data-v-34570adb] .img-card:hover,.content.is-drag-selecting[data-v-34570adb] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-34570adb] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-34570adb] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-34570adb] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-34570adb] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-34570adb] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-34570adb] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-34570adb] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-34570adb] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-34570adb]{grid-column: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-34570adb]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-34570adb]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-34570adb]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-34570adb]{padding:80px 20px}@media (max-width:768px){.content[data-v-34570adb]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-34570adb]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-34570adb]{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-34570adb]{display:flex;align-items:center}.list-col-checkbox[data-v-34570adb]{justify-content:center;min-width:40px}.custom-checkbox[data-v-34570adb]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-34570adb]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-34570adb],.custom-checkbox.indeterminate[data-v-34570adb]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-34570adb]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-34570adb]{display:none}}.pagination-container[data-v-34570adb]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-34570adb]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-34570adb] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-34570adb] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-34570adb] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-34570adb] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-34570adb] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-34570adb] .btn-next,.pagination-container[data-v-34570adb] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-34570adb] .btn-next:hover,.pagination-container[data-v-34570adb] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-34570adb]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-34570adb]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-34570adb]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-34570adb]{width:50px}.page-jump .jump-input[data-v-34570adb] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-34570adb] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-34570adb]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-34570adb]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-34570adb]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-34570adb]{order:0}.pagination-right[data-v-34570adb]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-34570adb]{width:45px}}.refresh-btn[data-v-34570adb]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-34570adb]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-34570adb]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-34570adb]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-34570adb] .btn-prev{left:8px}[data-v-34570adb] .btn-next,[data-v-34570adb] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-34570adb] .btn-next{right:8px}@media (min-width:768px){[data-v-34570adb] .el-pagination.is-background .btn-next,[data-v-34570adb] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-34570adb] .el-pagination.is-background .btn-next:hover,[data-v-34570adb] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-34570adb]{margin:0 3px}.breadcrumb[data-v-34570adb]{padding:8px 12px;background-color:var(--el-bg-color);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease}.breadcrumb[data-v-34570adb]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-34570adb]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-34570adb]:hover{color:var(--admin-purple)}[data-v-34570adb] .el-breadcrumb__item{cursor:pointer}[data-v-34570adb] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-34570adb]{display:none;align-items:center;gap:6px;padding:6px 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-34570adb]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-34570adb]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-34570adb]{font-size:12px;font-weight:500;color:var(--el-text-color-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-34570adb]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-34570adb]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-34570adb]{display:flex}.desktop-only[data-v-34570adb]{display:none!important}.breadcrumb-container[data-v-34570adb]{padding:0;margin-left:0}}.drag-select-overlay[data-v-34570adb]{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} \ No newline at end of file +.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-768efd1f]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-768efd1f]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-768efd1f]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-768efd1f]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(56,189,248,.12),rgba(14,165,233,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-768efd1f]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-768efd1f]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,#38bdf8,rgba(14,165,233,.5));border-radius:2px}.mobile-drawer-close[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-768efd1f]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-768efd1f]{background:linear-gradient(135deg,rgba(56,189,248,.2),rgba(14,165,233,.12));color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-768efd1f]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-768efd1f]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-768efd1f]{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-768efd1f]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-768efd1f]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-768efd1f]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-768efd1f]{animation:slideInLeft-768efd1f .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-768efd1f]{animation:slideOutLeft-768efd1f .2s ease-in}.drawer-slide-enter-from[data-v-768efd1f],.drawer-slide-leave-to[data-v-768efd1f]{opacity:0}@keyframes slideInLeft-768efd1f{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-768efd1f{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-62bb601c]{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-62bb601c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-62bb601c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-62bb601c]{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-62bb601c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-62bb601c]{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}html.dark .bottom-sheet-title[data-v-62bb601c]{color:#f0f0f0}.bottom-sheet-content[data-v-62bb601c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-62bb601c]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-62bb601c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-62bb601c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-62bb601c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-62bb601c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-62bb601c],.bottom-sheet-danger[data-v-62bb601c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-62bb601c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-62bb601c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-62bb601c]{animation:slideUp-62bb601c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-62bb601c]{animation:slideDown-62bb601c .2s ease-in}.bottom-sheet-enter-from[data-v-62bb601c],.bottom-sheet-leave-to[data-v-62bb601c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-62bb601c],.bottom-sheet-leave-to .bottom-sheet[data-v-62bb601c]{transform:translateY(100%)}@keyframes slideUp-62bb601c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-62bb601c{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-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-ec3adcfc]{padding:0}.tab-content[data-v-ec3adcfc]{padding:20px}.tab-description[data-v-ec3adcfc]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-ec3adcfc]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-ec3adcfc]{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-ec3adcfc]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-ec3adcfc]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-ec3adcfc],.tags-to-add-section[data-v-ec3adcfc]{margin-bottom:20px}.common-tags-section h4[data-v-ec3adcfc],.tags-to-add-section h4[data-v-ec3adcfc]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-ec3adcfc]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-ec3adcfc]{cursor:default}.empty-message[data-v-ec3adcfc]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-ec3adcfc]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-689f94e2]{padding:10px 0}.input-section[data-v-689f94e2]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-689f94e2]{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-689f94e2]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-689f94e2]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-689f94e2],.popular-tags-section[data-v-689f94e2]{margin-bottom:20px}.current-tags-section h4[data-v-689f94e2],.popular-tags-section h4[data-v-689f94e2]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-689f94e2]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-689f94e2]{cursor:default}.tag-item.clickable[data-v-689f94e2]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-689f94e2]:hover{transform:translateY(-2px)}.empty-message[data-v-689f94e2]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-689f94e2]{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-3f80812c]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-3f80812c]{margin-left:0!important}.video-preview[data-v-3f80812c]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-3f80812c],.video-preview[data-v-3f80812c]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-3f80812c]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-3f80812c] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-3f80812c]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-3f80812c]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border-radius:8px;min-height:60px}.preview-content[data-v-3f80812c]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-3f80812c] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-3f80812c] .el-descriptions__content .el-tag,[data-v-3f80812c] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-3f80812c] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-3f80812c] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-3f80812c]{justify-content:center}}.batch-floating-bar[data-v-7445695a]{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:7px;max-width:min(720px,calc(100vw - 48px));padding:8px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.batch-selection-summary[data-v-7445695a]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-7445695a]{min-width:20px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-container-color);font-size:15px;font-weight:650;line-height:1}.batch-toolbar-divider[data-v-7445695a]{width:1px;height:20px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.78}.batch-floating-actions[data-v-7445695a]{display:flex;align-items:center;gap:6px}.batch-floating-btn[data-v-7445695a]{width:38px;height:38px;min-width:38px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-7445695a]:hover{transform:translateY(-2px);background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.copy[data-v-7445695a]{color:var(--admin-batch-copy-color)}.batch-floating-btn.danger[data-v-7445695a]{color:var(--admin-batch-delete-color)}.batch-floating-btn.download[data-v-7445695a]{color:var(--admin-batch-download-color)}.batch-floating-btn.move[data-v-7445695a]{color:var(--admin-batch-move-color)}.batch-floating-btn.tag[data-v-7445695a]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ban[data-v-7445695a]{color:var(--admin-batch-ban-color)}.batch-floating-btn.white[data-v-7445695a]{color:var(--admin-batch-white-color)}.batch-floating-btn.ghost[data-v-7445695a]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-7445695a]{width:16px;margin-right:0}.batch-toolbar-enter-active[data-v-7445695a],.batch-toolbar-leave-active[data-v-7445695a]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-7445695a],.batch-toolbar-leave-to[data-v-7445695a]{opacity:0;transform:translateX(-50%) translateY(16px) scale(.98)}.batch-toolbar-enter-to[data-v-7445695a],.batch-toolbar-leave-from[data-v-7445695a]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-7445695a]{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:5px;padding:7px;border-radius:999px}.batch-selection-summary[data-v-7445695a]{padding:0 1px}.batch-selection-count[data-v-7445695a]{min-width:18px;height:24px;padding:0 3px;font-size:13px}.batch-toolbar-divider[data-v-7445695a]{height:18px}.batch-floating-actions[data-v-7445695a]{flex:1;min-width:0;gap:5px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-7445695a]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-7445695a]{width:34px;height:34px;min-width:34px;padding:0;border-radius:50%}.batch-floating-icon[data-v-7445695a]{margin-right:0;width:14px}.batch-toolbar-enter-from[data-v-7445695a],.batch-toolbar-leave-to[data-v-7445695a]{transform:translateX(-50%) translateY(16px) scale(.98)}.batch-toolbar-enter-to[data-v-7445695a],.batch-toolbar-leave-from[data-v-7445695a]{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-78d34f50]{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-78d34f50]:last-child{border-bottom:none}.list-item[data-v-78d34f50]:hover{background:var(--el-fill-color-light)}.list-col[data-v-78d34f50]{display:flex;align-items:center}.list-col-checkbox[data-v-78d34f50]{justify-content:center;min-width:40px}.list-col-preview[data-v-78d34f50]{justify-content:center;cursor:pointer}.list-col-name[data-v-78d34f50]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-78d34f50]:hover{color:#38bdf8}.filename-ellipsis[data-v-78d34f50]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-78d34f50]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-78d34f50]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-78d34f50],.list-col-channel[data-v-78d34f50],.list-col-date[data-v-78d34f50],.list-col-size[data-v-78d34f50]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-78d34f50]{font-size:13px}.address-box[data-v-78d34f50],.channel-name-box[data-v-78d34f50]{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-78d34f50]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-78d34f50]{width:70px}.address-box[data-v-78d34f50]::-webkit-scrollbar,.channel-name-box[data-v-78d34f50]::-webkit-scrollbar{display:none}.list-col-tags[data-v-78d34f50]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-78d34f50]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-78d34f50]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-78d34f50]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-78d34f50]{font-size:10px;color:#fff}.color-tag[data-v-78d34f50]{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-78d34f50]{min-width:30px;text-align:center}.list-empty[data-v-78d34f50]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-78d34f50]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-78d34f50]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-78d34f50]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-78d34f50]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-78d34f50]{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-78d34f50]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-78d34f50]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-78d34f50]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-78d34f50],.list-col-channel-name[data-v-78d34f50],.list-col-channel[data-v-78d34f50],.list-col-date[data-v-78d34f50],.list-col-size[data-v-78d34f50],.list-col-tags[data-v-78d34f50]{display:none}.list-col-actions[data-v-78d34f50]{gap:4px}.list-action-btn[data-v-78d34f50]{width:28px;height:28px}.list-col-checkbox[data-v-78d34f50]{width:24px;min-width:24px}}.img-card[data-v-e367e94e]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e367e94e] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e367e94e] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e367e94e]:hover{transform:scale(1.05)}.image-preview[data-v-e367e94e],.video-preview[data-v-e367e94e]{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-e367e94e]{cursor:pointer}.img-card:hover .file-icon[data-v-e367e94e],.img-card:hover .image-preview[data-v-e367e94e],.img-card:hover .video-preview[data-v-e367e94e]{transform:scale(1.03)}.image-preview[data-v-e367e94e]:hover{opacity:.8}.file-short-info[data-v-e367e94e]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-e367e94e]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-e367e94e],.success-tag[data-v-e367e94e]{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);backdrop-filter:blur(4px)}.fail-tag[data-v-e367e94e]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-e367e94e]{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);backdrop-filter:blur(4px)}.file-preview[data-v-e367e94e]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-e367e94e]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-e367e94e]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-e367e94e]{cursor:pointer}.card-bottom-overlay[data-v-e367e94e]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));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-e367e94e]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e367e94e]{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-e367e94e]{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-e367e94e]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e367e94e],.action-bar-right[data-v-e367e94e]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e367e94e]{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-e367e94e]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e367e94e]:active{transform:scale(.95)}.action-btn-danger[data-v-e367e94e]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-e367e94e]{display:none!important}}@keyframes skeleton-shimmer-e367e94e{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-e367e94e]{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-e367e94e 1.5s ease-in-out infinite}.error-wrapper[data-v-e367e94e]{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-e367e94e]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-e367e94e]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-5f22ef48]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-5f22ef48] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-5f22ef48] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-5f22ef48]:hover{transform:scale(1.05)}.folder-card[data-v-5f22ef48]{cursor:pointer}.folder-icon[data-v-5f22ef48]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-5f22ef48]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-5f22ef48]{transform:scale(1.03)}.card-bottom-overlay[data-v-5f22ef48]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));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-5f22ef48]{display:flex;align-items:center;justify-content:center}.file-name[data-v-5f22ef48]{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-5f22ef48]{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-5f22ef48]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-5f22ef48],.action-bar-right[data-v-5f22ef48]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-5f22ef48]{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-5f22ef48]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-5f22ef48]:active{transform:scale(.95)}.action-btn-danger[data-v-5f22ef48]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-5f22ef48]{display:none!important}}@keyframes skeleton-shimmer-5060702c{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-5060702c{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-5060702c]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-info[data-v-5060702c]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-list-item[data-v-5060702c]{animation:skeleton-pulse-5060702c 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-5060702c]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-long[data-v-5060702c]{width:80%}.skeleton-text-long[data-v-5060702c],.skeleton-text-short[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-text-short[data-v-5060702c]{width:60px}.skeleton-text-tiny[data-v-5060702c]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-5060702c],.skeleton-text-tiny[data-v-5060702c]{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-5060702c 1.5s ease-in-out infinite}.skeleton-tag[data-v-5060702c]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-5060702c]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-5060702c]{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-5060702c]{display:flex;align-items:center}.list-col-checkbox[data-v-5060702c],.list-col-preview[data-v-5060702c]{justify-content:center}@media (max-width:768px){.list-item[data-v-5060702c]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-5060702c],.list-col-channel-name[data-v-5060702c],.list-col-channel[data-v-5060702c],.list-col-date[data-v-5060702c],.list-col-size[data-v-5060702c],.list-col-tags[data-v-5060702c]{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-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-c3aeeea0]{flex-shrink:0}.filter-trigger[data-v-c3aeeea0]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-c3aeeea0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-c3aeeea0]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-c3aeeea0] .el-badge__content{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-c3aeeea0]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-c3aeeea0]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-c3aeeea0]:last-of-type{border-bottom:none}.filter-title[data-v-c3aeeea0]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-c3aeeea0],.filter-options[data-v-c3aeeea0] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-c3aeeea0] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-c3aeeea0] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-c3aeeea0]{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-c3aeeea0]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-c3aeeea0] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-c3aeeea0]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-c3aeeea0]{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-c3aeeea0]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-c3aeeea0]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-c3aeeea0]{min-width:160px;max-height:320px}.filter-section[data-v-c3aeeea0]{padding:6px 10px}.filter-title[data-v-c3aeeea0]{font-size:11px;margin-bottom:4px}.filter-options[data-v-c3aeeea0] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-c3aeeea0] .el-checkbox__label{font-size:12px}.header-icon[data-v-c3aeeea0]{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-4e00471a]{display:flex;align-items:center;justify-content:center;gap:8px}.title[data-v-4e00471a]{display:flex;align-items:center;gap:8px;font-size:1.1em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:5px 12px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4e00471a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4e00471a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4e00471a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4e00471a]{cursor:pointer;font-size:1.3em;transition:all .3s ease;color:var(--admin-container-color);padding:5px 8px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4e00471a],.tabs-dropdown-link[data-v-4e00471a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.tabs[data-v-4e00471a]{gap:6px}.title[data-v-4e00471a]{font-size:1em;padding:3px 8px;gap:5px}.tabs-dropdown-link[data-v-4e00471a]{font-size:1.1em;padding:3px 6px}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-4e00471a]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px}.container[data-v-437b7a30]{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-437b7a30] .el-container,[data-v-437b7a30] .el-main{overflow:visible}[data-v-437b7a30] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-437b7a30]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-437b7a30]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-437b7a30]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-437b7a30]{font-size:.95em}.header-content .actions[data-v-437b7a30]{gap:10px}.search-card[data-v-437b7a30] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-437b7a30] .el-input__wrapper{padding:0 10px}.search-card[data-v-437b7a30] .el-input__inner:focus{width:65vw}}.header-content[data-v-437b7a30]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-437b7a30]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-437b7a30]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-437b7a30]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-437b7a30]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-select-button[data-v-437b7a30]{width:32px;height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--el-border-color-lighter);border-radius:6px;color:#38bdf8;background:var(--el-fill-color-light);box-shadow:var(--admin-dashboard-stats-shadow);cursor:pointer;transition:transform .2s ease,color .2s ease,background-color .2s ease,box-shadow .2s ease}.breadcrumb-select-button[data-v-437b7a30]:hover{color:var(--admin-purple);transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-select-icon[data-v-437b7a30]{font-size:14px}@media (max-width:768px){.breadcrumb-container[data-v-437b7a30]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-select-button[data-v-437b7a30]{width:28px;height:28px;box-sizing:border-box;border-radius:8px}.breadcrumb-select-icon[data-v-437b7a30]{font-size:12px}}.stats-badge[data-v-437b7a30]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}.stats-badge[data-v-437b7a30]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-437b7a30]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-437b7a30]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-437b7a30]{font-size:9px}}.header-content .actions[data-v-437b7a30]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-437b7a30]{margin-top:10px}}.header-content .actions i[data-v-437b7a30]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-437b7a30]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-437b7a30]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-437b7a30]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-437b7a30]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-437b7a30]{color:var(--admin-purple)}.search-area[data-v-437b7a30]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-437b7a30]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-437b7a30]{display:flex;align-items:center}.search-card[data-v-437b7a30] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-437b7a30] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-437b7a30] .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-437b7a30] .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-437b7a30] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-437b7a30] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-437b7a30] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-437b7a30] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-437b7a30] .el-input__inner:focus{width:55vw}}.search-icon[data-v-437b7a30]{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-437b7a30]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-437b7a30]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-437b7a30] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-437b7a30]{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-437b7a30]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-437b7a30]{margin-top:12vh}.main-container.has-batch-toolbar[data-v-437b7a30]{padding-bottom:86px}}.content[data-v-437b7a30]{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-437b7a30],.list-view.is-drag-selecting[data-v-437b7a30]{cursor:crosshair}.content.is-drag-selecting[data-v-437b7a30] .img-card:hover,.content.is-drag-selecting[data-v-437b7a30] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-437b7a30] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-437b7a30] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-437b7a30] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-437b7a30] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-437b7a30] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-437b7a30] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-437b7a30] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-437b7a30] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-437b7a30]{grid-column: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-437b7a30]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-437b7a30]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-437b7a30]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-437b7a30]{padding:80px 20px}@media (max-width:768px){.content[data-v-437b7a30]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-437b7a30]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-437b7a30]{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-437b7a30]{display:flex;align-items:center}.list-col-checkbox[data-v-437b7a30]{justify-content:center;min-width:40px}.custom-checkbox[data-v-437b7a30]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-437b7a30]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-437b7a30],.custom-checkbox.indeterminate[data-v-437b7a30]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-437b7a30]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-437b7a30]{display:none}}.pagination-container[data-v-437b7a30]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-437b7a30]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-437b7a30] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-437b7a30] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-437b7a30] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-437b7a30] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-437b7a30] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-437b7a30] .btn-next,.pagination-container[data-v-437b7a30] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-437b7a30] .btn-next:hover,.pagination-container[data-v-437b7a30] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-437b7a30]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-437b7a30]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-437b7a30]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-437b7a30]{width:50px}.page-jump .jump-input[data-v-437b7a30] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-437b7a30] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-437b7a30]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-437b7a30]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-437b7a30]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-437b7a30]{order:0}.pagination-right[data-v-437b7a30]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-437b7a30]{width:45px}}.refresh-btn[data-v-437b7a30]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-437b7a30]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-437b7a30]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-437b7a30]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-437b7a30] .btn-prev{left:8px}[data-v-437b7a30] .btn-next,[data-v-437b7a30] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-437b7a30] .btn-next{right:8px}@media (min-width:768px){[data-v-437b7a30] .el-pagination.is-background .btn-next,[data-v-437b7a30] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-437b7a30] .el-pagination.is-background .btn-next:hover,[data-v-437b7a30] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-437b7a30]{margin:0 3px}.breadcrumb[data-v-437b7a30]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:var(--el-fill-color-light);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease}.breadcrumb[data-v-437b7a30]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-437b7a30]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-437b7a30]:hover{color:var(--admin-purple)}[data-v-437b7a30] .el-breadcrumb__item{cursor:pointer}[data-v-437b7a30] .el-breadcrumb,[data-v-437b7a30] .el-breadcrumb__inner,[data-v-437b7a30] .el-breadcrumb__item,[data-v-437b7a30] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-437b7a30] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-437b7a30]{display:none;align-items:center;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-437b7a30]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-437b7a30]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-437b7a30]{display:inline-flex;align-items:center;height:100%;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-437b7a30]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-437b7a30]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-437b7a30]{display:flex}.desktop-only[data-v-437b7a30]{display:none!important}.breadcrumb-container[data-v-437b7a30]{padding:0;margin-left:0}}.drag-select-overlay[data-v-437b7a30]{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} \ No newline at end of file diff --git a/frontend-dist/css/776.fd98f5b9.css.gz b/frontend-dist/css/770.4b3a009b.css.gz similarity index 83% rename from frontend-dist/css/776.fd98f5b9.css.gz rename to frontend-dist/css/770.4b3a009b.css.gz index d474afb9451dab8cbeddfc7d615927ca5322fd79..3f1e1f86c730a4d0791971dee9677fc675007c2d 100644 GIT binary patch delta 2382 zcmV-U39woF3V}!TduG6&nc*TcceIGMdB`&bcM;wfUuZ|--j+P+3@%>Y zTX&q45`UY2i_&PU#2HPpYz)ud3||Jv?o<+`HR|0?x==9968hiK>pWnEvSr{BjVB>% zGMe)zW_wg37F6D*R3e3*b71r(e)r~Xc^{wQPy~$RxI&9 zbMl;jeBOHbVSjMVQr~&PMNHui6TJ1S*ZwYMONpEI?ntMdCQi&z-QW6ujRIQ+33-wT?s)B2v=T+_Tx-7mApZ@bN>nEvsQc( zNuYmD;KQ2l=m%iHogkI6-D~Z5thx2wuYdKwp$ygjR0cE&%8>-dPy*xo#2eU68qn<3 zvr=)ehw8~(V$g$ZHTNFHa1Kx)-3bdZjL*X~V_LNfgv1OAoS~IziY_mUtx-5!3l0K_ zRBis31P_;5=X4nwIN85}c|K_>#G+wYJ(+)f!frd5legWw#u_|KFGm`5R%Y{$Pem0~ zp89T&n1rS{#`0O{Dv;;Y*u((X1tm>v2ryx|j*0%x>~(6fUwvSztoq_-(H)B_^3TEN z#$r!Gbl*UCia4PQNUH?*N}w{W+--zkfr9Nkc6+c8w|S&5G`w^3@W(MqNnEe8{Jej9 zA5~kU(L`imQ}G%db1bcQ+hf|*bqSK|NK92&tJjJ5O!UoLF-CnHpMcPkN*=v0Se{tw z2Axsfz067UwAQAnKShHnYkd%$(WU|cgv>Cdj_-d0Mn0{Z# zqz_^OEEE@qI0v-mY-8KhZF|g%X2^d~k(Qt@d7v*S_V6GWHAmoMz?5dP?0_z>?wYHfXCwGG5*^e<(gicR)2J5)zT&x4t}r2hC{~ zX63n!NEtO^5w#dq2z#NNXEpv$>G-*6c*Tog#xpvEynP7Sl;hrKyIEL*pN4-9HsyoC z%u-e}%F<$Y6e0EW6)NMvjz!h=8JMNB2TT}jR=_jv9Fp&YkkxYqI&UKT>d}&sYFeNNJwKm{d6N}_O;U-a%chQm_6Cy_--uc);PEXKG zi83o&Udbr|J?R6c;QtOLhm*U?D?*1spME_S??ITNCMt_-FW*&BvP6G!2r)se=2D)iMQLpor!cpx9}?iKLS!w&wIPCF+Xx5*47-fzqyl*I7E zFSNCp-nik}obVAzySmFuuRswjW}7}BY>dBLPUrikpjA(t1{aqR<3=O=ztr;V5{2jd z<`3v%eK#F?tqwQpLx19&spc*9?N{Y#@(u2 zyV9}uPPJUK?G1mqfqi7{6~FGdDc5%}5SX;5tn*!Zsv9(96NGar{rJuud_>_r-Yo#v z9q>Avf;D8_+;kYUYE%TCWVUI}$FcaH)E?s#i`_<&|+ZsDF- z2w0^^u@rw!>^DGo8f87t=BeIbw+SlS*3Az+7qQ*q?ZMd-al#c=EnaL$CPlTf=&;a? zu;-KkBw3jzNBjG{0Wl=3X05$<7(mW>cf32=2JWz)h#Mv2afsrpluHCJxq}NYS|*)0 zpxC61bjx59$PTsNyZW5gRr$kBN1DXS84<#h1JPZ#Q49xy}fD28?(9p3kj8S!Qg5E0L?Rz Ap8x;= delta 2342 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 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 443f09c4ba6a9be9f7e22d96302ddc328ce0bf13..34bf8b9f5b4da219b3469f943c96232071a0dcd8 100644 GIT binary patch delta 503 zcmVAUp2`^dvvL)q$AW3pw)juzpz`itFrdj( zs>SQ>y1ibn&jlOII=RU1K=Y*eUWIu?xEuP9V+#e`!axR7fX;aYOPO8hA$r9frQw`$ zhx4A2$rp616Mx_8jAaFGQ2nz|dm0U7rlelFqeixrE{MN4(MWdeu{j%DR!dSY62V}H z=^(koBp@eUi|R2~+KypYOc)HMT&_3W_RVJ7m5*68vRa^jqfjxHYONHu_!4;Z>*SBl zFS~VHZLV+Dn^Na27F#pV9ti0Q`CL|+M~DG0C;+e#FP6+2z@Xq+lMb(9aGJ1bYi;4xzwwaxw$+N-qt7Yu0f z6f5zzy=t!3>vO>dla6j+cc6LFe6PYhBHZ=e$FYG7ZlNcGF+l4)f~CYRbTD|uEyezv zafkDsqDimlR(~hH)fvkQT(7!kq4qQyNK8?^bVrSBDZV29;zTXkvB&ysa9J!#xkv*SA4FT1s+HdovACf6y6#n!~L$7B&%yha}yU6*CK)pT3)Crq&%NJD0>WuPYo94U15 zH@t`liDI0g85z=XV?SKq*|7mbn8F3ap5hLMNCQSc!``u_k>Qh?)cvvu465;Ha`@~~ xB|OF87?_U!xG-Wai&Ixw{2s)(37k28{lm1zO|>kRX^Z2%{{p0Xxd#6O008lo_aFcO diff --git a/frontend-dist/js/770.865557c0.js b/frontend-dist/js/770.865557c0.js new file mode 100644 index 00000000..211ffc8a --- /dev/null +++ b/frontend-dist/js/770.865557c0.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[770],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15423:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return hn}});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"},_={class:"move-dialog-hint"},w={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},$={key:0,class:"error-state"},L={class:"error-text"},S={class:"node-label"},x={class:"drawer-footer"};function D(e,t,a,D,E,A){const I=d.WK,U=(0,c.g2)("font-awesome-icon"),z=l.S2,B=o.A,W=r.kZ,P=s.qk,R=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(W,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(z,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(z,{type:"primary",loading:E.loading,onClick:A.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)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.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)(B,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(z,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(U,{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)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(z,{onClick:A.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)(z,{type:"primary",loading:E.loading,onClick:A.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)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(z,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(U,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",_,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",w,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(z,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(U,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",$,[(0,c.bF)(U,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(E.treeError),1),(0,c.bF)(z,{type:"primary",size:"small",onClick:A.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)(P,{key:1,ref:"treeRef",data:E.treeData,props:E.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:A.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)(U,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",S,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={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,E.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}}},I=a(71241);const U=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var z=U,B=a(45130);const W={class:"mobile-drawer-header"},P={class:"mobile-drawer-title"},R={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)(B.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,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",W,[(0,c.Lk)("span",P,(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",R,[(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,I.A)(M,[["render",N],["__scopeId","data-v-768efd1f"]]);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)(B.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,B.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,I.A)(H,[["render",G],["__scopeId","data-v-62bb601c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((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,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(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)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(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)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{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",ve,[(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"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701),a(33110);var ye=a(51219),_e=a(12933),we={name:"BatchTagDialog",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,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},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()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},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,E.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(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){_e.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(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(we,[["render",ke],["__scopeId","data-v-ec3adcfc"]]);var Ce=Fe,Te=a(813);a(34896);const $e={class:"tag-management-container"},Le={class:"input-section"},Se={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},Ue={key:0,class:"tags-container"},ze={key:1,class:"empty-message"},Be={key:2,class:"empty-message"},We={class:"dialog-footer"};function Pe(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",We,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",$e,[(0,c.Lk)("div",Le,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Se,[((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,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((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:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ue,[((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",ze,[(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",Be,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.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),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.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,E.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(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Ne=(0,I.A)(Oe,[["render",Pe],["__scopeId","data-v-689f94e2"]]);var Me=Ne,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#909399"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#909399"}};function st(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=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,_=je.US,w=r.kZ;return(0,c.uX)(),(0,c.Wv)(w,{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",Ge,[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",He,[(0,c.Lk)("div",qe,[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,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):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",Je,(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",et,(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",tt,[(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",at,(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",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(w,{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)(_,{onSubmit:(0,B.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 rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={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(()=>{ye.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,E.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();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.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=ot(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,E.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();ye.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),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-3f80812c"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(B.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{content:e.$t("dashboard.clearSelection"),placement:"top"},{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,["content"]),(0,c.bF)(d,{content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((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,content:e.$t(t.label),placement:"top"},{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,["content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={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"}]}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-7445695a"]]);var kt=vt,yt=a(54880),_t=(a(4318),a(77815));a(72907);const wt={class:"list-col list-col-checkbox"},Ft=["src"],Ct=["src"],Tt=["title"],$t={class:"filename-start"},Lt={class:"filename-end"},St={class:"list-col list-col-tags"},xt={key:1,class:"list-empty"},Dt={class:"list-col list-col-channel"},Et={class:"list-col list-col-channel-name"},At={key:0,class:"channel-name-box"},It={key:1,class:"list-empty"},Ut={class:"list-col list-col-address"},zt={key:0,class:"address-box"},Bt={key:1,class:"list-empty"},Wt={class:"list-col list-col-size"},Pt={class:"list-col list-col-date"},Rt={class:"list-col list-col-actions"};function Ot(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[9]||(t[9]=t=>e.$emit("touchstart",t)),onTouchend:t[10]||(t[10]=t=>e.$emit("touchend",t)),onTouchmove:t[11]||(t[11]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",wt,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:n.localSelected}]),onClick:t[0]||(t[0]=(0,B.D$)((...e)=>s.toggleSelect&&s.toggleSelect(...e),["stop"]))},[n.localSelected?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(r,{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,Ft)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Ct)):((0,c.uX)(),(0,c.Wv)(r,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",$t,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",Lt,(0,h.v_)(s.fileNameEnd),1)],8,Tt)]),(0,c.Lk)("div",St,[!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",xt,"-"))]),(0,c.Lk)("div",Dt,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Et,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",At,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",It,"-"))]),(0,c.Lk)("div",Ut,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",zt,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Bt,"-"))]),(0,c.Lk)("div",Wt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Pt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Rt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,B.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(r,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(o,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(r,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Nt={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:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},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 Mt=(0,I.A)(Nt,[["render",Ot],["__scopeId","data-v-78d34f50"]]);var Vt=Mt,Xt=a(70683),jt=(a(95385),a(98469));a(38736);const Kt={class:"file-short-info"},Zt={key:0,class:"success-tag"},Gt={key:1,class:"fail-tag"},Ht={key:2,class:"success-tag"},qt={key:3,class:"primary-tag"},Qt={key:0,style:{"margin-left":"2px"}},Yt={key:0,class:"skeleton-wrapper"},Jt={class:"error-text"},ea=["src"],ta={class:"error-text"},aa={key:3,class:"file-preview"},ia={class:"card-bottom-overlay"},na={class:"file-name-row"},sa={class:"file-name"},ra={class:"action-bar"},oa={class:"action-bar-left"},la={class:"action-bar-right"};function da(e,t,a,i,n,s){const r=jt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Xt.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",Kt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Zt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Gt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Ht,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",qt,[(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",Qt," (+"+(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",Yt)):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",Jt,(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),[[B.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,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ta,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",aa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",ia,[(0,c.Lk)("div",na,[(0,c.Lk)("span",sa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ra,[(0,c.Lk)("div",oa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",la,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var ca={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 ha=(0,I.A)(ca,[["render",da],["__scopeId","data-v-e367e94e"]]);var ua=ha;const fa={class:"card-bottom-overlay"},ma={class:"file-name-row"},pa={class:"file-name"},ga={key:0,class:"action-bar"},ba={class:"action-bar-right"};function va(e,t,a,i,n,s){const r=jt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Xt.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",fa,[(0,c.Lk)("div",ma,[(0,c.Lk)("span",pa,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",ga,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",ba,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var ka={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 ya=(0,I.A)(ka,[["render",va],["__scopeId","data-v-5f22ef48"]]);var _a=ya;function wa(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 Fa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ca=(0,I.A)(Fa,[["render",wa],["__scopeId","data-v-5060702c"]]);var Ta=Ca,$a=a(81095),La=(a(77128),a(62086)),Sa=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const xa={class:"el-dropdown-link filter-trigger"},Da={class:"filter-section"},Ea={class:"filter-title"},Aa={class:"filter-options"},Ia={class:"filter-section"},Ua={class:"filter-title"},za={class:"filter-options"},Ba={class:"filter-section"},Wa={class:"filter-title"},Pa={class:"filter-options"},Ra={class:"filter-section"},Oa={class:"filter-title"},Na={class:"filter-options"},Ma={class:"filter-section"},Va={class:"filter-title"},Xa={class:"filter-options"},ja={key:0,class:"filter-section"},Ka={class:"filter-title"},Za={class:"filter-options"},Ga={key:0,class:"channel-divider"},Ha={class:"channel-group-title"},qa={class:"filter-actions"};function Qa(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Sa.z_,d=jt.dI,u=jt.o5,f=l.S2,m=La.Iy,p=La.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",Da,[(0,c.Lk)("div",Ea,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Aa,[(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",Ia,[(0,c.Lk)("div",Ua,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",za,[(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",Ba,[(0,c.Lk)("div",Wa,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Pa,[(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",Ra,[(0,c.Lk)("div",Oa,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Na,[(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",Ma,[(0,c.Lk)("div",Va,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Xa,[(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",ja,[(0,c.Lk)("div",Ka,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Za,[(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",Ga)):(0,c.Q3)("",!0),(0,c.Lk)("div",Ha,(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",qa,[(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",xa,[(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),a(18237);var Ya={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 Ja=(0,I.A)(Ya,[["render",Qa],["__scopeId","data-v-c3aeeea0"]]);var ei=Ja,ti=a(97247);const ai={class:"container"},ii={class:"header-content"},ni={class:"search-area"},si={class:"search-card"},ri={class:"actions"},oi={class:"el-dropdown-link"},li={class:"el-dropdown-link"},di={class:"breadcrumb-container"},ci={class:"mobile-directory-path"},hi={class:"breadcrumb desktop-only"},ui=["title"],fi={key:1,class:"empty-state"},mi={class:"empty-text"},pi={class:"empty-hint"},gi={class:"list-header"},bi={class:"list-col list-col-checkbox"},vi={class:"list-col list-col-preview"},ki={class:"list-col list-col-name"},yi={class:"list-col list-col-tags"},_i={class:"list-col list-col-channel"},wi={class:"list-col list-col-channel-name"},Fi={class:"list-col list-col-address"},Ci={class:"list-col list-col-size"},Ti={class:"list-col list-col-date"},$i={class:"list-col list-col-actions"},Li={key:1,class:"empty-state list-empty"},Si={class:"empty-text"},xi={class:"empty-hint"},Di={class:"pagination-container"},Ei={class:"pagination-center"},Ai={class:"pagination-right"},Ii={class:"page-total"},Ui={class:"page-jump"},zi={class:"dialog-section"},Bi={class:"section-header"},Wi={class:"section-title"},Pi={class:"section-content"},Ri={class:"dialog-section"},Oi={class:"section-header"},Ni={class:"section-title"},Mi={class:"section-content"},Vi={class:"setting-item"},Xi={class:"setting-label"},ji={key:0,class:"setting-item"},Ki={class:"setting-label"},Zi={class:"dialog-action"};function Gi(e,t,a,i,n,s){const o=ti.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=ei,p=La.c6,g=La.Iy,b=La.dW,v=ht.R7,k=yt.bZ,y=$a.WZ,_=$a.vp,w=Ta,F=_a,C=ua,T=Vt,$=_t.aQ,L=l.S2,S=yt.ZO,x=yt.lX,D=kt,E=ct,A=Xe.ll,I=Xe.MQ,U=Ve.qi,W=r.kZ,P=Me,R=Ce,O=Q,N=X,M=z;return(0,c.uX)(),(0,c.CE)("div",ai,[(0,c.bF)(x,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",ii,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",ni,[(0,c.Lk)("div",si,[(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,B.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",ri,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",oi,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",li,[(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)(v,{disabled:s.disableTooltip,content:"card"===n.viewMode?e.$t("dashboard.listView"):e.$t("dashboard.cardView"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"card"===n.viewMode?"list":"th-large",class:"header-icon",onClick:s.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{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)(S,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",di,[(0,c.Lk)("button",{class:"breadcrumb-select-button",type:"button",onClick:t[3]||(t[3]=(...e)=>s.handleSelectPage&&s.handleSelectPage(...e))},[(0,c.bF)(u,{icon:s.selectPageIcon,class:"breadcrumb-select-icon"},null,8,["icon"])]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[4]||(t[4]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",ci,(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",hi,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(y,{onClick:t[5]||(t[5]=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)(y,{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,ui)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef"},[n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"card",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",fi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",mi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",pi,(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)(F,{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)(C,{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))],2)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef"},[(0,c.Lk)("div",gi,[(0,c.Lk)("div",bi,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:s.isSelectAll,indeterminate:s.isIndeterminate}]),onClick:t[6]||(t[6]=e=>s.handleSelectAllPage(!s.isSelectAll))},[s.isSelectAll?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"check-icon"})):s.isIndeterminate?((0,c.uX)(),(0,c.Wv)(u,{key:1,icon:"minus",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",vi,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",ki,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",yi,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",_i,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",wi,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Fi,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ci,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ti,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"list",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Li,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Si,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",xi,(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)(T,{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))],2)),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",Di,[(0,c.Lk)("div",Ei,[(0,c.bF)($,{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)(L,{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)(L,{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",Ai,[(0,c.Lk)("span",Ii,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ui,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[7]||(t[7]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,B.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[24]||(t[24]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(D,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(E,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[8]||(t[8]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[9]||(t[9]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[10]||(t[10]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[11]||(t[11]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[12]||(t[12]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[13]||(t[13]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",zi,[(0,c.Lk)("div",Bi,[(0,c.Lk)("span",Wi,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Pi,[(0,c.bF)(I,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[14]||(t[14]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(A,{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)(A,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(A,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(A,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(A,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[28]||(t[28]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(A,{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",Ri,[(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Ni,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{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",Mi,[(0,c.Lk)("div",Vi,[(0,c.Lk)("span",Xi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(U,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",ji,[(0,c.Lk)("span",Ki,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[16]||(t[16]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",Zi,[(0,c.bF)(L,{type:"primary",onClick:t[17]||(t[17]=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)(P,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(R,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[20]||(t[20]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[21]||(t[21]=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)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[22]||(t[22]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(M,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[23]||(t[23]=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"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698),a(14603),a(47566),a(98721);var Hi=a(60782),qi=a(44813),Qi=a.n(qi),Yi=a(54047),Ji=(a(58335),a(46638));class en{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,ye.nk.warning(Ji.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,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(Ji.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,E.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 tn=new en;var an=a(62388),nn=a(48903),sn=a(90144);function rn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function on(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 ln(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,sn.KR)(!1),r=(0,sn.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,sn.BA)(i);return t[e]||void 0}function v(){const e=(0,sn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(U(),I())}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,sn.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 _(e){return e.shiftKey||e.ctrlKey||e.metaKey}function w(){const e=(0,sn.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=on(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),S())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function $(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function S(){const e=b();if(!e)return;const t=(0,sn.BA)(e.containerRef);if(!t)return;const a=(0,sn.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=rn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=_(e),w(),!d){const e=(0,sn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=on(o,o),$(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=on(o,t),S();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(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",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function U(){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",D),document.removeEventListener("mouseup",E))}function z(){k()}return(0,c.wB)(()=>(0,sn.BA)(i),()=>{U(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",z)}),(0,c.xo)(()=>{U(),L(),T(),I(),window.removeEventListener("resize",z)}),{isDragging:s,selectionRect:r}}var dn={name:"AdminDashBoard",mixins:[nn.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",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}},components:{DashboardTabs:ti.A,TagManagementDialog:Me,BatchTagDialog:Ce,SkeletonLoader:Ta,FileCard:ua,FolderCard:_a,FileListItem:Vt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,FilterDropdown:ei,MoveFileDialog:z,LanguageSwitcher:Yi.A},setup(){const e=(0,sn.KR)(null),t=(0,sn.KR)(null),a=(0,sn.KR)("card"),i=(0,sn.KR)([]),{isDragging:n,selectionRect:s}=ln({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:{...(0,Hi.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},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},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)},selectPageIcon(){return this.selectPage?"check-square":this.selectedPageFiles?"minus-square":"square"},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},sortOption(e){localStorage.setItem("sortOption",e)},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:{toggleViewMode(){this.viewMode="card"===this.viewMode?"list":"card",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,E.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,E.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,E.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,E.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,E.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),tn.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,E.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),tn.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,E.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 tn.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},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),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,an.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,E.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();tn.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,E.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();tn.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,E.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,E.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(Qi()),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()},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 tn.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.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=tn.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 tn.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"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},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,E.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.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)}};const cn=(0,I.A)(dn,[["render",Gi],["__scopeId","data-v-437b7a30"]]);var hn=cn},15616:function(e,t,a){"use strict";a(85331),a(97197)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return $}});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.Vc,L=n.pw,S=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[w.isDesktop?((0,l.uX)(),(0,l.Wv)($,{key:0,visible:_.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>_.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,[_.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_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.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:_.treeData,props:_.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:w.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"]))])),[[S,_.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)=>w.openDrawer&&w.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:_.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>_.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,[_.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_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.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:_.treeData,props:_.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:w.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"]))])),[[S,_.loading]])]),_:1},8,["modelValue","title"])],64))])}var _=a(457),w=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,w.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 _.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 $=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)},44813:function(e,t,a){a(44114),a(16573),a(78100),a(77936),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)),_=b.length!==f.name.length,w=y.length!==v.length,F="",C="",T="",$=f.dir,L=f.date,S={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(S.crc32=e.crc32,S.compressedSize=e.compressedSize,S.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!_&&!w||(x|=2048);var D=0,E=0;$&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,$)):(E=20,D|=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(),_&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),w&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(S.crc32,4),A+=i(S.compressedSize,4),A+=i(S.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,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,_=2*v+1,w=15,F=3,C=258,T=C+F+1,$=42,L=113,S=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(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 B(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,z(e.strm)}function W(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 R(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 S;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,B(e,!1),0===e.strm.avail_out))return S;if(e.strstart-e.block_start>=e.w_size-T&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(B(e,!1),e.strm.avail_out),S)}),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),W(n,n.gzhead.time>>16&255),W(n,n.gzhead.time>>24&255),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(W(n,255&n.gzhead.extra.length),W(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):(W(n,0),W(n,0),W(n,0),W(n,0),W(n,0),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(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,P(n,f),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(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)),z(e),r=n.pending,n.pending!==n.pending_buf_size));)W(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)),z(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)),z(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&&z(e),n.pending+2<=n.pending_buf_size&&(W(n,255&e.adler),W(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(z(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(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 S;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?S:x}(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 S;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&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?S:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===S||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(U(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),z(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(W(n,255&e.adler),W(n,e.adler>>8&255),W(n,e.adler>>16&255),W(n,e.adler>>24&255),W(n,255&e.total_in),W(n,e.total_in>>8&255),W(n,e.total_in>>16&255),W(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),z(e),0=a.w_size&&(0===o&&(U(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++]=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)>3,f&=(1<<(m-=_<<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),_=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(_-=4,z=8+(15&(y>>>=4)),0===a.wbits)a.wbits=z;else if(z>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)),_=y=0,a.mode=3;case 3:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.time=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),_=y=0,a.mode=4;case 4:for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.xflags=255&y,a.head.os=y>>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0,a.mode=5;case 5:if(1024&a.flags){for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.length=y,a.head&&(a.head.extra_len=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<($=a.length)&&($=v),$&&(a.head&&(z=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,$,z)),512&a.flags&&(a.check=s(a.check,f,$,g)),v-=$,g+=$,a.length-=$),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for($=0;z=f[g+$++],a.head&&z&&a.length<65536&&(a.head.name+=String.fromCharCode(z)),z&&$>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}e.adler=a.check=p(y),_=y=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,2;e.adler=a.check=1,a.mode=12;case 12:if(5===t||6===t)break e;case 13:if(a.last){y>>>=7&_,_-=7&_,a.mode=27;break}for(;_<3;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}switch(a.last=1&y,_-=1,3&(y>>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,_-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,_-=2;break;case 14:for(y>>>=7&_,_-=7&_;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if((65535&y)!=(y>>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,_=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if($=a.length){if(v<$&&($=v),k<$&&($=k),0===$)break e;i.arraySet(m,f,g,$,b),v-=$,g+=$,k-=$,b+=$,a.length-=$;break}a.mode=12;break;case 17:for(;_<14;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(a.nlen=257+(31&y),y>>>=5,_-=5,a.ndist=1+(31&y),y>>>=5,_-=5,a.ncode=4+(15&y),y>>>=4,_-=4,286>>=3,_-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,W={bits:a.lenbits},B=o(0,a.lens,0,19,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(E<16)y>>>=x,_-=x,a.lens[a.have++]=E;else{if(16===E){for(P=x+2;_>>=x,_-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}z=a.lens[a.have-1],$=3+(3&y),y>>>=2,_-=2}else if(17===E){for(P=x+3;_>>=x)),y>>>=3,_-=3}else{for(P=x+7;_>>=x)),y>>>=7,_-=7}if(a.have+$>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;$--;)a.lens[a.have++]=z}}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,W={bits:a.lenbits},B=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,W={bits:a.distbits},B=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,W),a.distbits=W.bits,B){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=_,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,_=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(D&&0==(240&D)){for(A=x,I=D,U=E;D=(R=a.lencode[U+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(P=a.extra;_>>=a.extra,_-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(0==(240&D)){for(A=x,I=D,U=E;D=(R=a.distcode[U+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(P=a.extra;_>>=a.extra,_-=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($=F-k,a.offset>$){if(($=a.offset-$)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=$>a.wnext?($-=a.wnext,a.wsize-$):a.wnext-$,$>a.length&&($=a.length),S=a.window}else S=m,L=b-a.offset,$=a.length;for(k<$&&($=k),k-=$,a.length-=$;m[b++]=S[L++],--$;);0===a.length&&(a.mode=21);break;case 26:if(0===k)break e;m[b++]=a.length,k--,a.mode=21;break;case 27:if(a.wrap){for(;_<32;){if(0===v)break e;v--,y|=f[g++]<<_,_+=8}if(F-=k,e.total_out+=F,a.total+=F,F&&(e.adler=a.check=a.flags?s(a.check,m,F,b-F):n(a.check,m,F,b-F)),F=k,(a.flags?y:p(y))!==a.check){e.msg="incorrect data check",a.mode=30;break}_=y=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(y!==(4294967295&a.total)){e.msg="incorrect length check",a.mode=30;break}_=y=0}a.mode=29;case 29:B=1;break e;case 30:B=-3;break e;case 31:return-4;case 32:default:return h}return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,(a.wsize||F!==e.avail_out&&a.mode<30&&(a.mode<27||4!==t))&&T(e,e.output,e.next_out,F-e.avail_out)?(a.mode=31,-4):(w-=e.avail_in,F-=e.avail_out,e.total_in+=w,e.total_out+=F,a.total+=F,a.wrap&&F&&(e.adler=a.check=a.flags?s(a.check,m,F,e.next_out-F):n(a.check,m,F,e.next_out-F)),e.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0==w&&0===F||4===t)&&B===c&&(B=-5),B)},a.inflateEnd=function(e){if(!e||!e.state)return h;var t=e.state;return t.window&&(t.window=null),e.state=null,c},a.inflateGetHeader=function(e,t){var a;return e&&e.state?0==(2&(a=e.state).wrap)?h:((a.head=t).done=!1,c):h},a.inflateSetDictionary=function(e,t){var a,i=t.length;return e&&e.state?0!==(a=e.state).wrap&&11!==a.mode?h:11===a.mode&&n(1,t,i,0)!==a.check?-3:T(e,t,i,i)?(a.mode=31,-4):(a.havedict=1,c):h},a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,a){"use strict";var i=e("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],s=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,a,l,d,c,h,u){var f,m,p,g,b,v,k,y,_,w=u.bits,F=0,C=0,T=0,$=0,L=0,S=0,x=0,D=0,E=0,A=0,I=null,U=0,z=new i.Buf16(16),B=new i.Buf16(16),W=null,P=0;for(F=0;F<=15;F++)z[F]=0;for(C=0;Cv?(y=W[P+h[C]],I[U+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|_,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--z[F]){if(F===$)break;F=t[a+h[C]]}if(L>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(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?(P(e,2+(i?1:0),3),K(e,T,$)):(P(e,4+(i?1:0),3),function(e,t,a,i){var n;for(P(e,t-257,5),P(e,a-1,5),P(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*(S[a]+d+1)]++,e.dyn_dtree[2*B(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){P(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(W(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)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=770.865557c0.js.map \ No newline at end of file diff --git a/frontend-dist/js/770.865557c0.js.gz b/frontend-dist/js/770.865557c0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c77e890c7455c4a7fc2a5d8193ec1162100f983f GIT binary patch literal 57686 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/770.865557c0.js.map b/frontend-dist/js/770.865557c0.js.map new file mode 100644 index 00000000..85ec91b8 --- /dev/null +++ b/frontend-dist/js/770.865557c0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/770.865557c0.js","mappings":"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","sources":["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?99b2","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?5420","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?ffce","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?e1c6","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?25b5","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?0dfd","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?9d79","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?f89c","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?1c31","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?136f","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?bd3a","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?0ec3","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/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"],"sourcesContent":["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=768efd1f&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=768efd1f&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-768efd1f\"]])\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=62bb601c&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=62bb601c&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-62bb601c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } 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};\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_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\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[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\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 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 }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"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: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"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: \"\",\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, [\"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\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\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.map.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\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 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 window.innerWidth < 768 ? '90%' : '600px';\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 methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\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.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 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 const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\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 action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\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 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 action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\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 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 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 action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\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 this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=ec3adcfc&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=ec3adcfc&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-ec3adcfc\"]])\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_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[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"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 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 }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"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: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"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))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\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 loadingPopularTags: 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 window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\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 }\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 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 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 tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n 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 throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\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 tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n 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 }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=689f94e2&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=689f94e2&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-689f94e2\"]])\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\": \"#909399\"\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\": \"#909399\"\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 \"core-js/modules/es.json.stringify.js\";\nimport { 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=3f80812c&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=3f80812c&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-3f80812c\"]])\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 content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\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, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"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 content: _ctx.$t(action.label),\n placement: \"top\"\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, [\"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 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=7445695a&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=7445695a&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-7445695a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, createVNode as _createVNode, 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_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[9] || (_cache[9] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $data.localSelected\n }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.toggleSelect && $options.toggleSelect(...args), [\"stop\"]))\n }, [$data.localSelected ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[1] || (_cache[1] = (...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[2] || (_cache[2] = (...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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-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, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[8] || (_cache[8] = _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 toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\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=78d34f50&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=78d34f50&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-78d34f50\"]])\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 }, {\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 }, {\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 }, {\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 }, {\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 }, {\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=e367e94e&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=e367e94e&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-e367e94e\"]])\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 }, {\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 }, {\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 }, {\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=5f22ef48&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=5f22ef48&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-5f22ef48\"]])\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=5060702c&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=5060702c&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-5060702c\"]])\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=c3aeeea0&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=c3aeeea0&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-c3aeeea0\"]])\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, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"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: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_10 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_11 = [\"title\"];\nconst _hoisted_12 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_13 = {\n class: \"empty-text\"\n};\nconst _hoisted_14 = {\n class: \"empty-hint\"\n};\nconst _hoisted_15 = {\n class: \"list-header\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_26 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_27 = {\n class: \"empty-text\"\n};\nconst _hoisted_28 = {\n class: \"empty-hint\"\n};\nconst _hoisted_29 = {\n class: \"pagination-container\"\n};\nconst _hoisted_30 = {\n class: \"pagination-center\"\n};\nconst _hoisted_31 = {\n class: \"pagination-right\"\n};\nconst _hoisted_32 = {\n class: \"page-total\"\n};\nconst _hoisted_33 = {\n class: \"page-jump\"\n};\nconst _hoisted_34 = {\n class: \"dialog-section\"\n};\nconst _hoisted_35 = {\n class: \"section-header\"\n};\nconst _hoisted_36 = {\n class: \"section-title\"\n};\nconst _hoisted_37 = {\n class: \"section-content\"\n};\nconst _hoisted_38 = {\n class: \"dialog-section\"\n};\nconst _hoisted_39 = {\n class: \"section-header\"\n};\nconst _hoisted_40 = {\n class: \"section-title\"\n};\nconst _hoisted_41 = {\n class: \"section-content\"\n};\nconst _hoisted_42 = {\n class: \"setting-item\"\n};\nconst _hoisted_43 = {\n class: \"setting-label\"\n};\nconst _hoisted_44 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_45 = {\n class: \"setting-label\"\n};\nconst _hoisted_46 = {\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_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_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\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_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_radio_group = _resolveComponent(\"el-radio-group\");\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_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_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: $data.viewMode === 'card' ? _ctx.$t('dashboard.listView') : _ctx.$t('dashboard.cardView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'card' ? 'list' : 'th-large',\n class: \"header-icon\",\n onClick: $options.toggleViewMode\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\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_8, [_createElementVNode(\"button\", {\n class: \"breadcrumb-select-button\",\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleSelectPage && $options.handleSelectPage(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.selectPageIcon,\n class: \"breadcrumb-select-icon\"\n }, null, 8, [\"icon\"])]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_9, _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_10, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[5] || (_cache[5] = $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_11)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\"\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_13, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_14, _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))], 2)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\"\n }, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[6] || (_cache[6] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, [$options.isSelectAll ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : $options.isIndeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", _hoisted_17, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_19, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_27, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_28, _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))], 2)), $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_29, [_createElementVNode(\"div\", _hoisted_30, [_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_31, [_createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_33, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $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[24] || (_cache[24] = [_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[8] || (_cache[8] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[9] || (_cache[9] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[10] || (_cache[10] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[11] || (_cache[11] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[12] || (_cache[12] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[13] || (_cache[13] = $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[18] || (_cache[18] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"span\", _hoisted_36, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_37, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $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[25] || (_cache[25] = _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[26] || (_cache[26] = _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[27] || (_cache[27] = _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[28] || (_cache[28] = _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_38, [_createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"span\", _hoisted_40, _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_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_46, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[17] || (_cache[17] = $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[19] || (_cache[19] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $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[21] || (_cache[21] = $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[22] || (_cache[22] = $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[23] || (_cache[23] = $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.json.stringify.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 \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.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 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';\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 sortOption: 'dateDesc',\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 },\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 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 ...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 sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\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 selectPageIcon() {\n // 全选为 true 时,返回 check-square;部分选中为 minus-square;全不选为 square\n return this.selectPage ? 'check-square' : this.selectedPageFiles ? 'minus-square' : 'square';\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 sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\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 toggleViewMode() {\n this.viewMode = this.viewMode === 'card' ? 'list' : 'card';\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 sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\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 // 跳转到指定页码\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 // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\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 async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\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.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};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=437b7a30&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"./AdminDashBoard.vue?vue&type=style&index=0&id=437b7a30&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-437b7a30\"]])\n\nexport default __exports__","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"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","key","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","render","_ctx","_cache","$props","$setup","$data","$options","_component_el_input","_component_font_awesome_icon","_component_el_button","_component_DirectoryTreePicker","_component_el_dialog","_component_el_tree","_component_el_drawer","_directive_loading","isDesktop","modelValue","dialogVisible","$event","title","isBatchMove","$t","width","onClose","handleClose","footer","onClick","default","_","type","loading","handleConfirm","targetPath","placeholder","prepend","currentDirectory","source","onSelect","handleDirectorySelect","trigger","icon","direction","size","showTreePicker","text","treeError","fetchDirectoryTree","ref","data","treeData","props","treeProps","onNodeClick","handleTreeNodeClick","node","path","expanded","name","treeLoading","components","DirectoryTreePicker","Boolean","String","initialPath","emits","windowWidth","window","innerWidth","children","label","computed","get","this","set","val","$emit","watch","newVal","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","tree","err","console","error","startsWith","__exports__","to","args","close","active","currentPath","navigate","pathParts","folder","index","length","style","paddingLeft","slice","join","goBack","split","filter","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","visible","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","append","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","Array","required","debounceTimer","selectedFilesOnly","file","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","Promise","all","allTags","push","tags","every","includes","clearTimeout","trim","setTimeout","fetchSuggestions","prefix","toLowerCase","warning","indexOf","splice","headers","body","JSON","stringify","Error","success","updated","confirm","confirmButtonText","cancelButtonText","then","executeClearTags","catch","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","test","Object","fileType","endsWith","TimeStamp","Date","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","e","video","target","paused","play","pause","input","select","navigator","clipboard","writeText","value","open","result","oldFileId","_component_el_tooltip","selectedCount","content","placement","handleClear","actions","command","className","Number","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","disableTooltip","fileName","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","document","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","i","validator","_hoisted_19","_hoisted_20","_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","reduce","arr","groups","forEach","handler","newFilters","isArray","immediate","deep","_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","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_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_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","viewMode","toggleViewMode","handleLogout","handleSelectPage","selectPageIcon","showMobileDirectoryDrawer","pop","separator","navigateToFolder","isDragging","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","total","filteredTableData","pageSize","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","Math","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","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","constructor","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","files","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","global","t","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","substring","newFolder","removeFile","removeFolder","dir","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","min","x","y","abs","useDragSelect","options","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","mode","toValue","undefined","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","event","mainArea","closest","config","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","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","end","fullList","concat","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","selectPage","selectedPageFiles","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","replace","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","a","b","localeCompare","link","createElement","href","download","click","tab","$message","$confirm","reject","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","lock","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","appendChild","clip","execCommand","removeChild","fetchFileList","num","init","videoElement","fetch","credentials","authType","finally","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","$nextTick","tempData","refreshLocalFileList","f","resolve","zip","fileNameCount","downloadPromises","async","blob","extension","lastIndexOf","baseName","generateAsync","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","parseInt","max","loadMoreDataUntilPage","targetPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","floor","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","from","fileItems","totalCount","state","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","_component_el_popover","popoverVisible","transition","reference","$slots","handleNodeClick","openDrawer","drawerVisible","$refs","treeRef","store","nodesMap","treeRefMobile","setCurrentKey","axios","withAuthCode","module","exports","s","o","h","u","r","l","n","code","call","d","c","p","encode","getTypeOf","charCodeAt","charAt","decode","substr","uint8array","Uint8Array","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","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","O","utf8encode","I","m","g","v","w","k","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","resume","registerPrevious","generatedError","generateWorker","platform","_compressWorker","arguments","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","toUpperCase","toString","remove","generate","generateInternalStream","mimeType","checkSupport","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","apply","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","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","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","createTextNode","observe","characterData","MessageChannel","onreadystatechange","parentNode","documentElement","port1","onmessage","port2","postMessage","TypeError","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","race","assign","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","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","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","flags","check","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","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/770.865557c0.js.map.gz b/frontend-dist/js/770.865557c0.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac01ee87d5cc83812e21dd7058f26ecbe1be5a3b GIT binary patch literal 145433 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

soT{`->wRRK2Ds}RIfyU%W`-$-*E+!bKwJ8 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 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/776.74ad0ae6.js b/frontend-dist/js/776.74ad0ae6.js deleted file mode 100644 index e31cc577..00000000 --- a/frontend-dist/js/776.74ad0ae6.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[776],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15616:function(e,t,a){"use strict";a(85331),a(97197)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return $}});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.Vc,L=n.pw,S=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[w.isDesktop?((0,l.uX)(),(0,l.Wv)($,{key:0,visible:_.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>_.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,[_.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_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.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:_.treeData,props:_.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:w.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"]))])),[[S,_.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)=>w.openDrawer&&w.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)(L,{modelValue:_.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>_.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,[_.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_)(_.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:w.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:_.treeData,props:_.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:w.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"]))])),[[S,_.loading]])]),_:1},8,["modelValue","title"])],64))])}var _=a(457),w=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,w.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 _.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 $=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)},44813:function(e,t,a){a(44114),a(16573),a(78100),a(77936),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)),_=b.length!==f.name.length,w=y.length!==v.length,F="",C="",T="",$=f.dir,L=f.date,S={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(S.crc32=e.crc32,S.compressedSize=e.compressedSize,S.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!_&&!w||(x|=2048);var D=0,E=0;$&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,$)):(E=20,D|=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(),_&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),w&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(S.crc32,4),A+=i(S.compressedSize,4),A+=i(S.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,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,_=2*v+1,w=15,F=3,C=258,T=C+F+1,$=42,L=113,S=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(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 B(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,z(e.strm)}function W(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 R(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 S;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,B(e,!1),0===e.strm.avail_out))return S;if(e.strstart-e.block_start>=e.w_size-T&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(B(e,!1),e.strm.avail_out),S)}),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),W(n,n.gzhead.time>>16&255),W(n,n.gzhead.time>>24&255),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(W(n,255&n.gzhead.extra.length),W(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):(W(n,0),W(n,0),W(n,0),W(n,0),W(n,0),W(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),W(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,P(n,f),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(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)),z(e),r=n.pending,n.pending!==n.pending_buf_size));)W(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)),z(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)),z(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&&z(e),n.pending+2<=n.pending_buf_size&&(W(n,255&e.adler),W(n,e.adler>>8&255),e.adler=0,n.status=L)):n.status=L),0!==n.pending){if(z(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(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 S;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?S:x}(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 S;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&&(B(e,!1),0===e.strm.avail_out))return S}return e.insert=0,t===c?(B(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(B(e,!1),0===e.strm.avail_out)?S:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===S||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(U(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),z(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(W(n,255&e.adler),W(n,e.adler>>8&255),W(n,e.adler>>16&255),W(n,e.adler>>24&255),W(n,255&e.total_in),W(n,e.total_in>>8&255),W(n,e.total_in>>16&255),W(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),z(e),0=a.w_size&&(0===o&&(U(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++]=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)>3,f&=(1<<(m-=_<<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),_=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(_-=4,z=8+(15&(y>>>=4)),0===a.wbits)a.wbits=z;else if(z>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)),_=y=0,a.mode=3;case 3:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.time=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),_=y=0,a.mode=4;case 4:for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.head&&(a.head.xflags=255&y,a.head.os=y>>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0,a.mode=5;case 5:if(1024&a.flags){for(;_<16;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.length=y,a.head&&(a.head.extra_len=y),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),_=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<($=a.length)&&($=v),$&&(a.head&&(z=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,$,z)),512&a.flags&&(a.check=s(a.check,f,$,g)),v-=$,g+=$,a.length-=$),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for($=0;z=f[g+$++],a.head&&z&&a.length<65536&&(a.head.name+=String.fromCharCode(z)),z&&$>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}e.adler=a.check=p(y),_=y=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,2;e.adler=a.check=1,a.mode=12;case 12:if(5===t||6===t)break e;case 13:if(a.last){y>>>=7&_,_-=7&_,a.mode=27;break}for(;_<3;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}switch(a.last=1&y,_-=1,3&(y>>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,_-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,_-=2;break;case 14:for(y>>>=7&_,_-=7&_;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if((65535&y)!=(y>>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,_=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if($=a.length){if(v<$&&($=v),k<$&&($=k),0===$)break e;i.arraySet(m,f,g,$,b),v-=$,g+=$,k-=$,b+=$,a.length-=$;break}a.mode=12;break;case 17:for(;_<14;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(a.nlen=257+(31&y),y>>>=5,_-=5,a.ndist=1+(31&y),y>>>=5,_-=5,a.ncode=4+(15&y),y>>>=4,_-=4,286>>=3,_-=3}for(;a.have<19;)a.lens[N[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,W={bits:a.lenbits},B=o(0,a.lens,0,19,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(E<16)y>>>=x,_-=x,a.lens[a.have++]=E;else{if(16===E){for(P=x+2;_>>=x,_-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}z=a.lens[a.have-1],$=3+(3&y),y>>>=2,_-=2}else if(17===E){for(P=x+3;_>>=x)),y>>>=3,_-=3}else{for(P=x+7;_>>=x)),y>>>=7,_-=7}if(a.have+$>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;$--;)a.lens[a.have++]=z}}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,W={bits:a.lenbits},B=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,W),a.lenbits=W.bits,B){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,W={bits:a.distbits},B=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,W),a.distbits=W.bits,B){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=_,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,_=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(D&&0==(240&D)){for(A=x,I=D,U=E;D=(R=a.lencode[U+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(P=a.extra;_>>=a.extra,_-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(0==(240&D)){for(A=x,I=D,U=E;D=(R=a.distcode[U+((y&(1<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=A,_-=A,a.back+=A}if(y>>>=x,_-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(P=a.extra;_>>=a.extra,_-=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($=F-k,a.offset>$){if(($=a.offset-$)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}L=$>a.wnext?($-=a.wnext,a.wsize-$):a.wnext-$,$>a.length&&($=a.length),S=a.window}else S=m,L=b-a.offset,$=a.length;for(k<$&&($=k),k-=$,a.length-=$;m[b++]=S[L++],--$;);0===a.length&&(a.mode=21);break;case 26:if(0===k)break e;m[b++]=a.length,k--,a.mode=21;break;case 27:if(a.wrap){for(;_<32;){if(0===v)break e;v--,y|=f[g++]<<_,_+=8}if(F-=k,e.total_out+=F,a.total+=F,F&&(e.adler=a.check=a.flags?s(a.check,m,F,b-F):n(a.check,m,F,b-F)),F=k,(a.flags?y:p(y))!==a.check){e.msg="incorrect data check",a.mode=30;break}_=y=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;_<32;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(y!==(4294967295&a.total)){e.msg="incorrect length check",a.mode=30;break}_=y=0}a.mode=29;case 29:B=1;break e;case 30:B=-3;break e;case 31:return-4;case 32:default:return h}return e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=_,(a.wsize||F!==e.avail_out&&a.mode<30&&(a.mode<27||4!==t))&&T(e,e.output,e.next_out,F-e.avail_out)?(a.mode=31,-4):(w-=e.avail_in,F-=e.avail_out,e.total_in+=w,e.total_out+=F,a.total+=F,a.wrap&&F&&(e.adler=a.check=a.flags?s(a.check,m,F,e.next_out-F):n(a.check,m,F,e.next_out-F)),e.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0==w&&0===F||4===t)&&B===c&&(B=-5),B)},a.inflateEnd=function(e){if(!e||!e.state)return h;var t=e.state;return t.window&&(t.window=null),e.state=null,c},a.inflateGetHeader=function(e,t){var a;return e&&e.state?0==(2&(a=e.state).wrap)?h:((a.head=t).done=!1,c):h},a.inflateSetDictionary=function(e,t){var a,i=t.length;return e&&e.state?0!==(a=e.state).wrap&&11!==a.mode?h:11===a.mode&&n(1,t,i,0)!==a.check?-3:T(e,t,i,i)?(a.mode=31,-4):(a.havedict=1,c):h},a.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,a){"use strict";var i=e("../utils/common"),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],s=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],o=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,a,l,d,c,h,u){var f,m,p,g,b,v,k,y,_,w=u.bits,F=0,C=0,T=0,$=0,L=0,S=0,x=0,D=0,E=0,A=0,I=null,U=0,z=new i.Buf16(16),B=new i.Buf16(16),W=null,P=0;for(F=0;F<=15;F++)z[F]=0;for(C=0;Cv?(y=W[P+h[C]],I[U+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|_,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--z[F]){if(F===$)break;F=t[a+h[C]]}if(L>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(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?(P(e,2+(i?1:0),3),K(e,T,$)):(P(e,4+(i?1:0),3),function(e,t,a,i){var n;for(P(e,t-257,5),P(e,a-1,5),P(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*(S[a]+d+1)]++,e.dyn_dtree[2*B(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){P(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(W(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)},81025:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return hn}});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"},_={class:"move-dialog-hint"},w={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},$={key:0,class:"error-state"},L={class:"error-text"},S={class:"node-label"},x={class:"drawer-footer"};function D(e,t,a,D,E,A){const I=d.WK,U=(0,c.g2)("font-awesome-icon"),z=l.S2,B=o.A,W=r.kZ,P=s.qk,R=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(W,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(z,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(z,{type:"primary",loading:E.loading,onClick:A.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)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.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)(B,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(z,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(U,{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)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(z,{onClick:A.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)(z,{type:"primary",loading:E.loading,onClick:A.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)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(z,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(U,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",_,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",w,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(z,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(U,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",$,[(0,c.bF)(U,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",L,(0,h.v_)(E.treeError),1),(0,c.bF)(z,{type:"primary",size:"small",onClick:A.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)(P,{key:1,ref:"treeRef",data:E.treeData,props:E.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:A.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)(U,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",S,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={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,E.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}}},I=a(71241);const U=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var z=U,B=a(45130);const W={class:"mobile-drawer-header"},P={class:"mobile-drawer-title"},R={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)(B.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,B.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",W,[(0,c.Lk)("span",P,(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",R,[(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,I.A)(M,[["render",N],["__scopeId","data-v-768efd1f"]]);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)(B.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,B.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,I.A)(H,[["render",G],["__scopeId","data-v-62bb601c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((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,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(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)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(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)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{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",ve,[(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"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701),a(33110);var ye=a(51219),_e=a(12933),we={name:"BatchTagDialog",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,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},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()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},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,E.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(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){_e.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(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(we,[["render",ke],["__scopeId","data-v-ec3adcfc"]]);var Ce=Fe,Te=a(813);a(34896);const $e={class:"tag-management-container"},Le={class:"input-section"},Se={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},Ue={key:0,class:"tags-container"},ze={key:1,class:"empty-message"},Be={key:2,class:"empty-message"},We={class:"dialog-footer"};function Pe(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",We,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",$e,[(0,c.Lk)("div",Le,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,B.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Se,[((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,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((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:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ue,[((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",ze,[(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",Be,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.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),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.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,E.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(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Ne=(0,I.A)(Oe,[["render",Pe],["__scopeId","data-v-689f94e2"]]);var Me=Ne,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#909399"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#909399"}};function st(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=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,_=je.US,w=r.kZ;return(0,c.uX)(),(0,c.Wv)(w,{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",Ge,[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",He,[(0,c.Lk)("div",qe,[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,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):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",Je,(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",et,(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",tt,[(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",at,(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",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(w,{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)(_,{onSubmit:(0,B.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 rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={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(()=>{ye.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,E.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();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.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=ot(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,E.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();ye.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),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-3f80812c"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(B.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{content:e.$t("dashboard.clearSelection"),placement:"top"},{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,["content"]),(0,c.bF)(d,{content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((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,content:e.$t(t.label),placement:"top"},{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,["content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={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"}]}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-7445695a"]]);var kt=vt,yt=a(54880),_t=(a(4318),a(77815));a(72907);const wt={class:"list-col list-col-checkbox"},Ft=["src"],Ct=["src"],Tt=["title"],$t={class:"filename-start"},Lt={class:"filename-end"},St={class:"list-col list-col-tags"},xt={key:1,class:"list-empty"},Dt={class:"list-col list-col-channel"},Et={class:"list-col list-col-channel-name"},At={key:0,class:"channel-name-box"},It={key:1,class:"list-empty"},Ut={class:"list-col list-col-address"},zt={key:0,class:"address-box"},Bt={key:1,class:"list-empty"},Wt={class:"list-col list-col-size"},Pt={class:"list-col list-col-date"},Rt={class:"list-col list-col-actions"};function Ot(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[9]||(t[9]=t=>e.$emit("touchstart",t)),onTouchend:t[10]||(t[10]=t=>e.$emit("touchend",t)),onTouchmove:t[11]||(t[11]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",wt,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:n.localSelected}]),onClick:t[0]||(t[0]=(0,B.D$)((...e)=>s.toggleSelect&&s.toggleSelect(...e),["stop"]))},[n.localSelected?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(r,{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,Ft)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Ct)):((0,c.uX)(),(0,c.Wv)(r,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",$t,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",Lt,(0,h.v_)(s.fileNameEnd),1)],8,Tt)]),(0,c.Lk)("div",St,[!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",xt,"-"))]),(0,c.Lk)("div",Dt,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Et,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",At,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",It,"-"))]),(0,c.Lk)("div",Ut,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",zt,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Bt,"-"))]),(0,c.Lk)("div",Wt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Pt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Rt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,B.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(o,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(r,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,B.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(r,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(o,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(r,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(o,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(r,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Nt={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:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},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 Mt=(0,I.A)(Nt,[["render",Ot],["__scopeId","data-v-78d34f50"]]);var Vt=Mt,Xt=a(70683),jt=(a(95385),a(98469));a(38736);const Kt={class:"file-short-info"},Zt={key:0,class:"success-tag"},Gt={key:1,class:"fail-tag"},Ht={key:2,class:"success-tag"},qt={key:3,class:"primary-tag"},Qt={key:0,style:{"margin-left":"2px"}},Yt={key:0,class:"skeleton-wrapper"},Jt={class:"error-text"},ea=["src"],ta={class:"error-text"},aa={key:3,class:"file-preview"},ia={class:"card-bottom-overlay"},na={class:"file-name-row"},sa={class:"file-name"},ra={class:"action-bar"},oa={class:"action-bar-left"},la={class:"action-bar-right"};function da(e,t,a,i,n,s){const r=jt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Xt.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",Kt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Zt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Gt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",Ht,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",qt,[(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",Qt," (+"+(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",Yt)):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",Jt,(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),[[B.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,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ta,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",aa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",ia,[(0,c.Lk)("div",na,[(0,c.Lk)("span",sa,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ra,[(0,c.Lk)("div",oa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,B.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",la,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,B.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var ca={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 ha=(0,I.A)(ca,[["render",da],["__scopeId","data-v-e367e94e"]]);var ua=ha;const fa={class:"card-bottom-overlay"},ma={class:"file-name-row"},pa={class:"file-name"},ga={key:0,class:"action-bar"},ba={class:"action-bar-right"};function va(e,t,a,i,n,s){const r=jt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Xt.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",fa,[(0,c.Lk)("div",ma,[(0,c.Lk)("span",pa,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",ga,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",ba,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,B.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"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,B.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var ka={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 ya=(0,I.A)(ka,[["render",va],["__scopeId","data-v-5f22ef48"]]);var _a=ya;function wa(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 Fa={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ca=(0,I.A)(Fa,[["render",wa],["__scopeId","data-v-5060702c"]]);var Ta=Ca,$a=a(81095),La=(a(77128),a(62086)),Sa=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const xa={class:"el-dropdown-link filter-trigger"},Da={class:"filter-section"},Ea={class:"filter-title"},Aa={class:"filter-options"},Ia={class:"filter-section"},Ua={class:"filter-title"},za={class:"filter-options"},Ba={class:"filter-section"},Wa={class:"filter-title"},Pa={class:"filter-options"},Ra={class:"filter-section"},Oa={class:"filter-title"},Na={class:"filter-options"},Ma={class:"filter-section"},Va={class:"filter-title"},Xa={class:"filter-options"},ja={key:0,class:"filter-section"},Ka={class:"filter-title"},Za={class:"filter-options"},Ga={key:0,class:"channel-divider"},Ha={class:"channel-group-title"},qa={class:"filter-actions"};function Qa(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Sa.z_,d=jt.dI,u=jt.o5,f=l.S2,m=La.Iy,p=La.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",Da,[(0,c.Lk)("div",Ea,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Aa,[(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",Ia,[(0,c.Lk)("div",Ua,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",za,[(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",Ba,[(0,c.Lk)("div",Wa,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Pa,[(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",Ra,[(0,c.Lk)("div",Oa,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Na,[(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",Ma,[(0,c.Lk)("div",Va,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Xa,[(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",ja,[(0,c.Lk)("div",Ka,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Za,[(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",Ga)):(0,c.Q3)("",!0),(0,c.Lk)("div",Ha,(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",qa,[(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",xa,[(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),a(18237);var Ya={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 Ja=(0,I.A)(Ya,[["render",Qa],["__scopeId","data-v-c3aeeea0"]]);var ei=Ja,ti=a(97247);const ai={class:"container"},ii={class:"header-content"},ni={class:"search-area"},si={class:"search-card"},ri={class:"actions"},oi={class:"el-dropdown-link"},li={class:"el-dropdown-link"},di={class:"breadcrumb-container"},ci={class:"mobile-directory-path"},hi={class:"breadcrumb desktop-only"},ui=["title"],fi={key:1,class:"empty-state"},mi={class:"empty-text"},pi={class:"empty-hint"},gi={class:"list-header"},bi={class:"list-col list-col-checkbox"},vi={class:"list-col list-col-preview"},ki={class:"list-col list-col-name"},yi={class:"list-col list-col-tags"},_i={class:"list-col list-col-channel"},wi={class:"list-col list-col-channel-name"},Fi={class:"list-col list-col-address"},Ci={class:"list-col list-col-size"},Ti={class:"list-col list-col-date"},$i={class:"list-col list-col-actions"},Li={key:1,class:"empty-state list-empty"},Si={class:"empty-text"},xi={class:"empty-hint"},Di={class:"pagination-container"},Ei={class:"pagination-center"},Ai={class:"pagination-right"},Ii={class:"page-total"},Ui={class:"page-jump"},zi={class:"dialog-section"},Bi={class:"section-header"},Wi={class:"section-title"},Pi={class:"section-content"},Ri={class:"dialog-section"},Oi={class:"section-header"},Ni={class:"section-title"},Mi={class:"section-content"},Vi={class:"setting-item"},Xi={class:"setting-label"},ji={key:0,class:"setting-item"},Ki={class:"setting-label"},Zi={class:"dialog-action"};function Gi(e,t,a,i,n,s){const o=ti.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=ei,p=La.c6,g=La.Iy,b=La.dW,v=ht.R7,k=yt.bZ,y=$a.WZ,_=$a.vp,w=Ta,F=_a,C=ua,T=Vt,$=_t.aQ,L=l.S2,S=yt.ZO,x=yt.lX,D=kt,E=ct,A=Xe.ll,I=Xe.MQ,U=Ve.qi,W=r.kZ,P=Me,R=Ce,O=Q,N=X,M=z;return(0,c.uX)(),(0,c.CE)("div",ai,[(0,c.bF)(x,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",ii,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",ni,[(0,c.Lk)("div",si,[(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,B.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",ri,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",oi,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",li,[(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)(v,{disabled:s.disableTooltip,content:"card"===n.viewMode?e.$t("dashboard.listView"):e.$t("dashboard.cardView"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"card"===n.viewMode?"list":"th-large",class:"header-icon",onClick:s.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{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)(S,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",di,[(0,c.Lk)("button",{class:"breadcrumb-select-button",type:"button",onClick:t[3]||(t[3]=(...e)=>s.handleSelectPage&&s.handleSelectPage(...e))},[(0,c.bF)(u,{icon:s.selectPageIcon,class:"breadcrumb-select-icon"},null,8,["icon"])]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[4]||(t[4]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",ci,(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",hi,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(y,{onClick:t[5]||(t[5]=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)(y,{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,ui)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef"},[n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"card",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",fi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",mi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",pi,(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)(F,{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)(C,{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))],2)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef"},[(0,c.Lk)("div",gi,[(0,c.Lk)("div",bi,[(0,c.Lk)("span",{class:(0,h.C4)(["custom-checkbox",{checked:s.isSelectAll,indeterminate:s.isIndeterminate}]),onClick:t[6]||(t[6]=e=>s.handleSelectAllPage(!s.isSelectAll))},[s.isSelectAll?((0,c.uX)(),(0,c.Wv)(u,{key:0,icon:"check",class:"check-icon"})):s.isIndeterminate?((0,c.uX)(),(0,c.Wv)(u,{key:1,icon:"minus",class:"check-icon"})):(0,c.Q3)("",!0)],2)]),(0,c.Lk)("div",vi,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",ki,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",yi,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",_i,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",wi,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Fi,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ci,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ti,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(w,{key:0,type:"list",count:15})):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Li,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Si,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",xi,(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)(T,{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))],2)),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",Di,[(0,c.Lk)("div",Ei,[(0,c.bF)($,{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)(L,{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)(L,{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",Ai,[(0,c.Lk)("span",Ii,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ui,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[7]||(t[7]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,B.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[24]||(t[24]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(D,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(E,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[8]||(t[8]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[9]||(t[9]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[10]||(t[10]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[11]||(t[11]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[12]||(t[12]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[13]||(t[13]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",zi,[(0,c.Lk)("div",Bi,[(0,c.Lk)("span",Wi,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Pi,[(0,c.bF)(I,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[14]||(t[14]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(A,{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)(A,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(A,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(A,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(A,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[28]||(t[28]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(A,{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",Ri,[(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Ni,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{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",Mi,[(0,c.Lk)("div",Vi,[(0,c.Lk)("span",Xi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(U,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",ji,[(0,c.Lk)("span",Ki,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[16]||(t[16]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",Zi,[(0,c.bF)(L,{type:"primary",onClick:t[17]||(t[17]=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)(P,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(R,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[20]||(t[20]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[21]||(t[21]=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)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[22]||(t[22]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(M,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[23]||(t[23]=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"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698),a(14603),a(47566),a(98721);var Hi=a(60782),qi=a(44813),Qi=a.n(qi),Yi=a(54047),Ji=(a(58335),a(46638));class en{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,ye.nk.warning(Ji.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,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(Ji.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,E.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 tn=new en;var an=a(62388),nn=a(48903),sn=a(90144);function rn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function on(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 ln(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,sn.KR)(!1),r=(0,sn.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,sn.BA)(i);return t[e]||void 0}function v(){const e=(0,sn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(U(),I())}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,sn.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 _(e){return e.shiftKey||e.ctrlKey||e.metaKey}function w(){const e=(0,sn.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=on(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),S())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function $(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function L(){document.body.style.userSelect=g}function S(){const e=b();if(!e)return;const t=(0,sn.BA)(e.containerRef);if(!t)return;const a=(0,sn.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=rn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=_(e),w(),!d){const e=(0,sn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=on(o,o),$(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=on(o,t),S();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(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",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function U(){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",D),document.removeEventListener("mouseup",E))}function z(){k()}return(0,c.wB)(()=>(0,sn.BA)(i),()=>{U(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",z)}),(0,c.xo)(()=>{U(),L(),T(),I(),window.removeEventListener("resize",z)}),{isDragging:s,selectionRect:r}}var dn={name:"AdminDashBoard",mixins:[nn.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",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}},components:{DashboardTabs:ti.A,TagManagementDialog:Me,BatchTagDialog:Ce,SkeletonLoader:Ta,FileCard:ua,FolderCard:_a,FileListItem:Vt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,FilterDropdown:ei,MoveFileDialog:z,LanguageSwitcher:Yi.A},setup(){const e=(0,sn.KR)(null),t=(0,sn.KR)(null),a=(0,sn.KR)("card"),i=(0,sn.KR)([]),{isDragging:n,selectionRect:s}=ln({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:{...(0,Hi.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},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},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)},selectPageIcon(){return this.selectPage?"check-square":this.selectedPageFiles?"minus-square":"square"},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},sortOption(e){localStorage.setItem("sortOption",e)},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:{toggleViewMode(){this.viewMode="card"===this.viewMode?"list":"card",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,E.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,E.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,E.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,E.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,E.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),tn.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,E.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),tn.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,E.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 tn.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},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),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,an.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,E.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();tn.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,E.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();tn.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,E.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,E.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(Qi()),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()},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 tn.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.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=tn.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 tn.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"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},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,E.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.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)}};const cn=(0,I.A)(dn,[["render",Gi],["__scopeId","data-v-34570adb"]]);var hn=cn},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); -//# sourceMappingURL=776.74ad0ae6.js.map \ No newline at end of file diff --git a/frontend-dist/js/776.74ad0ae6.js.gz b/frontend-dist/js/776.74ad0ae6.js.gz deleted file mode 100644 index 42cd0137783125690b276dc080baea965b4fbcdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58054 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 $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 { 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=768efd1f&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=768efd1f&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-768efd1f\"]])\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=62bb601c&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=62bb601c&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-62bb601c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } 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};\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_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\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[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\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 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 }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"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: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"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: \"\",\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, [\"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\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\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.map.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\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 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 window.innerWidth < 768 ? '90%' : '600px';\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 methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\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.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 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 const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\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 action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\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 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 action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\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 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 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 action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\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 this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=ec3adcfc&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=ec3adcfc&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-ec3adcfc\"]])\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_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[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"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 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 }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"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: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"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))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\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 loadingPopularTags: 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 window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\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 }\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 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 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 tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n 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 throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\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 tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n 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 }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=689f94e2&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=689f94e2&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-689f94e2\"]])\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\": \"#909399\"\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\": \"#909399\"\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 \"core-js/modules/es.json.stringify.js\";\nimport { 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=3f80812c&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=3f80812c&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-3f80812c\"]])\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 content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\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, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"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 content: _ctx.$t(action.label),\n placement: \"top\"\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, [\"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 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=7445695a&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=7445695a&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-7445695a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, createVNode as _createVNode, 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_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[9] || (_cache[9] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[11] || (_cache[11] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $data.localSelected\n }]),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.toggleSelect && $options.toggleSelect(...args), [\"stop\"]))\n }, [$data.localSelected ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[1] || (_cache[1] = (...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[2] || (_cache[2] = (...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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-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, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[7] || (_cache[7] = _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 }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[8] || (_cache[8] = _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 toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\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=78d34f50&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=78d34f50&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-78d34f50\"]])\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 }, {\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 }, {\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 }, {\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 }, {\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 }, {\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=e367e94e&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=e367e94e&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-e367e94e\"]])\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 }, {\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 }, {\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 }, {\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=5f22ef48&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=5f22ef48&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-5f22ef48\"]])\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=5060702c&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=5060702c&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-5060702c\"]])\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=c3aeeea0&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=c3aeeea0&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-c3aeeea0\"]])\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, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"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: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_10 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_11 = [\"title\"];\nconst _hoisted_12 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_13 = {\n class: \"empty-text\"\n};\nconst _hoisted_14 = {\n class: \"empty-hint\"\n};\nconst _hoisted_15 = {\n class: \"list-header\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_26 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_27 = {\n class: \"empty-text\"\n};\nconst _hoisted_28 = {\n class: \"empty-hint\"\n};\nconst _hoisted_29 = {\n class: \"pagination-container\"\n};\nconst _hoisted_30 = {\n class: \"pagination-center\"\n};\nconst _hoisted_31 = {\n class: \"pagination-right\"\n};\nconst _hoisted_32 = {\n class: \"page-total\"\n};\nconst _hoisted_33 = {\n class: \"page-jump\"\n};\nconst _hoisted_34 = {\n class: \"dialog-section\"\n};\nconst _hoisted_35 = {\n class: \"section-header\"\n};\nconst _hoisted_36 = {\n class: \"section-title\"\n};\nconst _hoisted_37 = {\n class: \"section-content\"\n};\nconst _hoisted_38 = {\n class: \"dialog-section\"\n};\nconst _hoisted_39 = {\n class: \"section-header\"\n};\nconst _hoisted_40 = {\n class: \"section-title\"\n};\nconst _hoisted_41 = {\n class: \"section-content\"\n};\nconst _hoisted_42 = {\n class: \"setting-item\"\n};\nconst _hoisted_43 = {\n class: \"setting-label\"\n};\nconst _hoisted_44 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_45 = {\n class: \"setting-label\"\n};\nconst _hoisted_46 = {\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_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_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\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_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_radio_group = _resolveComponent(\"el-radio-group\");\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_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_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: $data.viewMode === 'card' ? _ctx.$t('dashboard.listView') : _ctx.$t('dashboard.cardView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'card' ? 'list' : 'th-large',\n class: \"header-icon\",\n onClick: $options.toggleViewMode\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\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_8, [_createElementVNode(\"button\", {\n class: \"breadcrumb-select-button\",\n type: \"button\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleSelectPage && $options.handleSelectPage(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.selectPageIcon,\n class: \"breadcrumb-select-icon\"\n }, null, 8, [\"icon\"])]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_9, _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_10, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[5] || (_cache[5] = $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_11)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\"\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_13, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_14, _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))], 2)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\"\n }, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[6] || (_cache[6] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, [$options.isSelectAll ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"check-icon\"\n })) : $options.isIndeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"check-icon\"\n })) : _createCommentVNode(\"\", true)], 2)]), _createElementVNode(\"div\", _hoisted_17, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_19, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_27, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_28, _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))], 2)), $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_29, [_createElementVNode(\"div\", _hoisted_30, [_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_31, [_createElementVNode(\"span\", _hoisted_32, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_33, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $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[24] || (_cache[24] = [_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[8] || (_cache[8] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[9] || (_cache[9] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[10] || (_cache[10] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[11] || (_cache[11] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[12] || (_cache[12] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[13] || (_cache[13] = $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[18] || (_cache[18] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"div\", _hoisted_35, [_createElementVNode(\"span\", _hoisted_36, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_37, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $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[25] || (_cache[25] = _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[26] || (_cache[26] = _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[27] || (_cache[27] = _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[28] || (_cache[28] = _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_38, [_createElementVNode(\"div\", _hoisted_39, [_createElementVNode(\"span\", _hoisted_40, _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_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_44, [_createElementVNode(\"span\", _hoisted_45, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_46, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[17] || (_cache[17] = $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[19] || (_cache[19] = $event => $data.showTagDialog = $event),\n fileId: $data.currentTagFile,\n onTagsUpdated: $options.handleTagsUpdated\n }, null, 8, [\"modelValue\", \"fileId\", \"onTagsUpdated\"]), _createVNode(_component_BatchTagDialog, {\n modelValue: $data.showBatchTagDialog,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $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[21] || (_cache[21] = $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[22] || (_cache[22] = $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[23] || (_cache[23] = $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.json.stringify.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 \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.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 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';\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 sortOption: 'dateDesc',\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 },\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 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 ...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 sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\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 selectPageIcon() {\n // 全选为 true 时,返回 check-square;部分选中为 minus-square;全不选为 square\n return this.selectPage ? 'check-square' : this.selectedPageFiles ? 'minus-square' : 'square';\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 sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\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 toggleViewMode() {\n this.viewMode = this.viewMode === 'card' ? 'list' : 'card';\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 sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\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 // 跳转到指定页码\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 // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\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 async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\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.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};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=34570adb&scoped=true\"\nimport script from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\nexport * from \"./AdminDashBoard.vue?vue&type=script&lang=js\"\n\nimport \"./AdminDashBoard.vue?vue&type=style&index=0&id=34570adb&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-34570adb\"]])\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","_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","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","selectedFilesOnly","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","allTags","tags","every","clearTimeout","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","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","_component_el_tooltip","selectedCount","content","handleClear","actions","command","className","Number","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","disableTooltip","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","_hoisted_19","_hoisted_20","_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","reduce","arr","groups","handler","newFilters","isArray","deep","_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","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_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_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","viewMode","toggleViewMode","handleLogout","handleSelectPage","selectPageIcon","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","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","pageSize","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","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","findIndex","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","event","mainArea","closest","config","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","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","selectPage","selectedPageFiles","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","localeCompare","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","videoElement","fetch","credentials","authType","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","loadMoreDataUntilPage","targetPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/776.74ad0ae6.js.map.gz b/frontend-dist/js/776.74ad0ae6.js.map.gz deleted file mode 100644 index b6b9e47158dd433bfaf9882da6df6c6b4c8af74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144563 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

fR&9Ac0_N*Hn&;V@g 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 JiQ6YG0RW^eR>A-P diff --git a/frontend-dist/js/app.26976a82.js.map.gz b/frontend-dist/js/app.26976a82.js.map.gz deleted file mode 100644 index 278cce3ebddd69adc4b93479bac8c2845fe03b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18557 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 Ig<}B$0Jb3xTmS$7 diff --git a/frontend-dist/js/app.26976a82.js b/frontend-dist/js/app.a0aaebef.js similarity index 99% rename from frontend-dist/js/app.26976a82.js rename to frontend-dist/js/app.a0aaebef.js index 72f2c53e..802e9db9 100644 --- a/frontend-dist/js/app.26976a82.js +++ b/frontend-dist/js/app.a0aaebef.js @@ -1,2 +1,2 @@ -(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),l=t(25507),i=t(457),r=t(46638);const s=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.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)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.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(740),t.e(600),t.e(428),t.e(528)]).then(t.bind(t,74828)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(600),t.e(604)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(740),t.e(309),t.e(428),t.e(776)]).then(t.bind(t,81025)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(740),t.e(309),t.e(833),t.e(396)]).then(t.bind(t,59396)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(740),t.e(309),t.e(833),t.e(529)]).then(t.bind(t,31529)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(600),t.e(728)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(917).then(t.bind(t,74917))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(51).then(t.bind(t,31051))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(718).then(t.bind(t,49718))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(226).then(t.bind(t,68226))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!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,credentials:e=>e.adminLoggedIn?"__session__":null,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},setCredentials(e,a){e.adminLoggedIn=null!==a&&void 0!==a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},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,l.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 c},xS:function(){return d}});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":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","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":"渠道类型","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":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","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":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"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":{"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.开启后,仅被加入白名单的文件可被访问","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":"设置已保存","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":"保存"},"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":"刷新页面"}}'),l=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","dragUploadText":"Drag Click or Ctrl + V 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","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","sortByDateDesc":"Sort by date (newest)","sortByNameAsc":"Sort by name (A-Z)","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","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"},"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":{"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","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","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"},"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"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),_=t(10798),G=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),_e=t(97447),Ge=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,_.A,G.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,_e.Jm,Ge.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.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})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.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}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(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"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),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+"."+{51:"6e7bf298",226:"ec43855c",309:"b7dca603",396:"226339af",528:"f7e99a9f",529:"e05f38bd",600:"08192622",604:"a1f7358f",718:"27080555",728:"3968461e",776:"74ad0ae6",917:"b77a6783"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{51:"1dd65d6c",226:"6548e7b4",396:"3a3d9729",428:"8044ed41",528:"9607928c",529:"6c0a8231",604:"1353235b",718:"d0974d1c",728:"1353235b",740:"a94dbb46",776:"fd98f5b9",833:"95983fa6",917:"8529ad1e"}[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,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;c{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.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)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.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(740),t.e(600),t.e(428),t.e(528)]).then(t.bind(t,74828)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(600),t.e(604)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(740),t.e(309),t.e(428),t.e(770)]).then(t.bind(t,15423)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(740),t.e(309),t.e(833),t.e(396)]).then(t.bind(t,59396)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(740),t.e(309),t.e(833),t.e(529)]).then(t.bind(t,31529)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(600),t.e(728)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(917).then(t.bind(t,74917))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(51).then(t.bind(t,31051))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(718).then(t.bind(t,49718))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(226).then(t.bind(t,68226))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!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,credentials:e=>e.adminLoggedIn?"__session__":null,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},setCredentials(e,a){e.adminLoggedIn=null!==a&&void 0!==a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},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,l.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 c},xS:function(){return d}});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":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","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":"渠道类型","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":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","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":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"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":{"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.开启后,仅被加入白名单的文件可被访问","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":"设置已保存","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":"保存"},"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":"刷新页面"}}'),l=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","dragUploadText":"Drag Click or Ctrl + V 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","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","sortByDateDesc":"Sort by date (newest)","sortByNameAsc":"Sort by name (A-Z)","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","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"},"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":{"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","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","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"},"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"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),_=t(10798),G=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),_e=t(97447),Ge=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,_.A,G.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,_e.Jm,Ge.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.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})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.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}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(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"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),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+"."+{51:"6e7bf298",226:"ec43855c",309:"b7dca603",396:"226339af",528:"f7e99a9f",529:"e05f38bd",600:"08192622",604:"a1f7358f",718:"27080555",728:"3968461e",770:"865557c0",917:"b77a6783"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{51:"1dd65d6c",226:"6548e7b4",396:"3a3d9729",428:"8044ed41",528:"4c6718b2",529:"6c0a8231",604:"1353235b",718:"d0974d1c",728:"1353235b",740:"a94dbb46",770:"4b3a009b",833:"95983fa6",917:"8529ad1e"}[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,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;csd4G9}A4u)iRfs-T8 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 {\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) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\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,\r\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 // 保留 credentials getter 以兼容 fetchWithAuth.js 等现有代码\r\n credentials: state => state.adminLoggedIn ? '__session__' : null,\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 // 兼容旧代码:setCredentials 映射到 adminLoggedIn\r\n setCredentials(state, credentials) {\r\n state.adminLoggedIn = credentials !== null && credentials !== undefined;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\r\n state.adminLoggedIn = loggedIn;\r\n },\r\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\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\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, 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_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)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { 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 ...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 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=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus 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 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\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 // 初始化时应用 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 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 + \".\" + {\"51\":\"6e7bf298\",\"226\":\"ec43855c\",\"309\":\"b7dca603\",\"396\":\"226339af\",\"528\":\"f7e99a9f\",\"529\":\"e05f38bd\",\"600\":\"08192622\",\"604\":\"a1f7358f\",\"718\":\"27080555\",\"728\":\"3968461e\",\"776\":\"74ad0ae6\",\"917\":\"b77a6783\"}[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 + \".\" + {\"51\":\"1dd65d6c\",\"226\":\"6548e7b4\",\"396\":\"3a3d9729\",\"428\":\"8044ed41\",\"528\":\"9607928c\",\"529\":\"6c0a8231\",\"604\":\"1353235b\",\"718\":\"d0974d1c\",\"728\":\"1353235b\",\"740\":\"a94dbb46\",\"776\":\"fd98f5b9\",\"833\":\"95983fa6\",\"917\":\"8529ad1e\"}[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 = {\"51\":1,\"226\":1,\"396\":1,\"428\":1,\"528\":1,\"529\":1,\"604\":1,\"718\":1,\"728\":1,\"740\":1,\"776\":1,\"833\":1,\"917\":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(!/^(428|740|833)$/.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__(81525); })\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","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","credentials","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setCredentials","setAdminLoggedIn","loggedIn","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","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","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_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","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","push","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.a0aaebef.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?83ca","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) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\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,\r\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 // 保留 credentials getter 以兼容 fetchWithAuth.js 等现有代码\r\n credentials: state => state.adminLoggedIn ? '__session__' : null,\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 // 兼容旧代码:setCredentials 映射到 adminLoggedIn\r\n setCredentials(state, credentials) {\r\n state.adminLoggedIn = credentials !== null && credentials !== undefined;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\r\n state.adminLoggedIn = loggedIn;\r\n },\r\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\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\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, 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_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)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { 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 ...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 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=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus 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 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\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 // 初始化时应用 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 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 + \".\" + {\"51\":\"6e7bf298\",\"226\":\"ec43855c\",\"309\":\"b7dca603\",\"396\":\"226339af\",\"528\":\"f7e99a9f\",\"529\":\"e05f38bd\",\"600\":\"08192622\",\"604\":\"a1f7358f\",\"718\":\"27080555\",\"728\":\"3968461e\",\"770\":\"865557c0\",\"917\":\"b77a6783\"}[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 + \".\" + {\"51\":\"1dd65d6c\",\"226\":\"6548e7b4\",\"396\":\"3a3d9729\",\"428\":\"8044ed41\",\"528\":\"4c6718b2\",\"529\":\"6c0a8231\",\"604\":\"1353235b\",\"718\":\"d0974d1c\",\"728\":\"1353235b\",\"740\":\"a94dbb46\",\"770\":\"4b3a009b\",\"833\":\"95983fa6\",\"917\":\"8529ad1e\"}[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 = {\"51\":1,\"226\":1,\"396\":1,\"428\":1,\"528\":1,\"529\":1,\"604\":1,\"718\":1,\"728\":1,\"740\":1,\"770\":1,\"833\":1,\"917\":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(!/^(428|740|833)$/.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__(81525); })\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","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","credentials","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setCredentials","setAdminLoggedIn","loggedIn","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","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","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_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","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","push","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.a0aaebef.js.map.gz b/frontend-dist/js/app.a0aaebef.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..c907d9847e02439cade0cfee39511f0deaec4ba3 GIT binary patch literal 18558 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 JcD!Q&0RWnCL!$ry literal 0 HcmV?d00001