From 0b68a8a74a76b9f04fe6fe370ee734421bb46089 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Tue, 27 Jan 2026 13:18:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/{743.ab3d1775.css => 257.0e3de612.css} | 2 +- ...43.ab3d1775.css.gz => 257.0e3de612.css.gz} | Bin 14054 -> 14054 bytes index.html | 2 +- index.html.gz | Bin 510 -> 511 bytes js/257.06c98fe6.js | 2 ++ js/257.06c98fe6.js.gz | Bin 0 -> 51356 bytes js/257.06c98fe6.js.map | 1 + js/257.06c98fe6.js.map.gz | Bin 0 -> 121530 bytes js/743.5066c4a0.js | 2 -- js/743.5066c4a0.js.gz | Bin 51315 -> 0 bytes js/743.5066c4a0.js.map | 1 - js/743.5066c4a0.js.map.gz | Bin 121234 -> 0 bytes js/{app.f4ce2fc3.js => app.0a61230d.js} | 4 ++-- js/{app.f4ce2fc3.js.gz => app.0a61230d.js.gz} | Bin 5168 -> 5166 bytes ...pp.f4ce2fc3.js.map => app.0a61230d.js.map} | 2 +- js/app.0a61230d.js.map.gz | Bin 0 -> 16009 bytes js/app.f4ce2fc3.js.map.gz | Bin 16013 -> 0 bytes 17 files changed, 8 insertions(+), 8 deletions(-) rename css/{743.ab3d1775.css => 257.0e3de612.css} (92%) rename css/{743.ab3d1775.css.gz => 257.0e3de612.css.gz} (84%) create mode 100644 js/257.06c98fe6.js create mode 100644 js/257.06c98fe6.js.gz create mode 100644 js/257.06c98fe6.js.map create mode 100644 js/257.06c98fe6.js.map.gz delete mode 100644 js/743.5066c4a0.js delete mode 100644 js/743.5066c4a0.js.gz delete mode 100644 js/743.5066c4a0.js.map delete mode 100644 js/743.5066c4a0.js.map.gz rename js/{app.f4ce2fc3.js => app.0a61230d.js} (57%) rename js/{app.f4ce2fc3.js.gz => app.0a61230d.js.gz} (56%) rename js/{app.f4ce2fc3.js.map => app.0a61230d.js.map} (99%) create mode 100644 js/app.0a61230d.js.map.gz delete mode 100644 js/app.f4ce2fc3.js.map.gz diff --git a/css/743.ab3d1775.css b/css/257.0e3de612.css similarity index 92% rename from css/743.ab3d1775.css rename to css/257.0e3de612.css index cdd4940..88e77b3 100644 --- a/css/743.ab3d1775.css +++ b/css/257.0e3de612.css @@ -1 +1 @@ -.mobile-drawer-overlay[data-v-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-2d8e83ec]: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-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-2d8e83ec]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-2d8e83ec]{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-2d8e83ec]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-2d8e83ec]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-2d8e83ec]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-2d8e83ec]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-2d8e83ec]{animation:slideInLeft-2d8e83ec .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-2d8e83ec]{animation:slideOutLeft-2d8e83ec .2s ease-in}.drawer-slide-enter-from[data-v-2d8e83ec],.drawer-slide-leave-to[data-v-2d8e83ec]{opacity:0}@keyframes slideInLeft-2d8e83ec{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-2d8e83ec{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-7579ad69]{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-7579ad69]{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-7579ad69]{--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-7579ad69]{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-7579ad69]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-7579ad69]{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-7579ad69]{color:#f0f0f0}.bottom-sheet-content[data-v-7579ad69]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-7579ad69]{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-7579ad69]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-7579ad69]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-7579ad69]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-7579ad69]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-7579ad69],.bottom-sheet-danger[data-v-7579ad69]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-7579ad69]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-7579ad69]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-7579ad69]{animation:slideUp-7579ad69 .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-7579ad69]{animation:slideDown-7579ad69 .2s ease-in}.bottom-sheet-enter-from[data-v-7579ad69],.bottom-sheet-leave-to[data-v-7579ad69]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-7579ad69],.bottom-sheet-leave-to .bottom-sheet[data-v-7579ad69]{transform:translateY(100%)}@keyframes slideUp-7579ad69{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-7579ad69{0%{transform:translateY(0)}to{transform:translateY(100%)}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.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-dacf7742]{padding:0}.tab-content[data-v-dacf7742]{padding:20px}.tab-description[data-v-dacf7742]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-dacf7742]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-dacf7742]{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-dacf7742]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-dacf7742]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-dacf7742],.tags-to-add-section[data-v-dacf7742]{margin-bottom:20px}.common-tags-section h4[data-v-dacf7742],.tags-to-add-section h4[data-v-dacf7742]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-dacf7742]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-dacf7742]{cursor:default}.empty-message[data-v-dacf7742]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-dacf7742]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-8b4291b4]{padding:10px 0}.input-section[data-v-8b4291b4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-8b4291b4]{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-8b4291b4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-8b4291b4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-8b4291b4],.popular-tags-section[data-v-8b4291b4]{margin-bottom:20px}.current-tags-section h4[data-v-8b4291b4],.popular-tags-section h4[data-v-8b4291b4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-8b4291b4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-8b4291b4]{cursor:default}.tag-item.clickable[data-v-8b4291b4]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-8b4291b4]:hover{transform:translateY(-2px)}.empty-message[data-v-8b4291b4]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-8b4291b4]{display:flex;justify-content:flex-end}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.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-0dc381fc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-0dc381fc]{margin-left:0!important}.video-preview[data-v-0dc381fc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-0dc381fc],.video-preview[data-v-0dc381fc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-0dc381fc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-0dc381fc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-0dc381fc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-0dc381fc]{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-0dc381fc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-0dc381fc] .description-item{word-break:break-all;word-wrap:break-word}[data-v-0dc381fc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}@media (max-width:768px){.detail-actions[data-v-0dc381fc]{justify-content:center}}.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-9968e9fe]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;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-9968e9fe]:last-child{border-bottom:none}.list-item[data-v-9968e9fe]:hover{background:var(--el-fill-color-light)}.list-col[data-v-9968e9fe]{display:flex;align-items:center}.list-col-checkbox[data-v-9968e9fe]{justify-content:center;min-width:40px}.list-col-preview[data-v-9968e9fe]{justify-content:center;cursor:pointer}.list-col-name[data-v-9968e9fe]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-9968e9fe]:hover{color:#38bdf8}.filename-ellipsis[data-v-9968e9fe]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-9968e9fe]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-9968e9fe]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-9968e9fe],.list-col-channel[data-v-9968e9fe],.list-col-date[data-v-9968e9fe],.list-col-size[data-v-9968e9fe]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-9968e9fe]{font-size:13px}.address-box[data-v-9968e9fe],.channel-name-box[data-v-9968e9fe]{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-9968e9fe]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-9968e9fe]{width:70px}.address-box[data-v-9968e9fe]::-webkit-scrollbar,.channel-name-box[data-v-9968e9fe]::-webkit-scrollbar{display:none}.list-col-tags[data-v-9968e9fe]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-9968e9fe]{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-9968e9fe]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-9968e9fe]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-9968e9fe]{font-size:10px;color:#fff}.color-tag[data-v-9968e9fe]{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-9968e9fe]{min-width:30px;text-align:center}.list-empty[data-v-9968e9fe]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-9968e9fe]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-9968e9fe]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-9968e9fe]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-9968e9fe]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-9968e9fe]{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-9968e9fe]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-9968e9fe]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-9968e9fe]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-9968e9fe],.list-col-channel-name[data-v-9968e9fe],.list-col-channel[data-v-9968e9fe],.list-col-date[data-v-9968e9fe],.list-col-size[data-v-9968e9fe],.list-col-tags[data-v-9968e9fe]{display:none}.list-col-actions[data-v-9968e9fe]{gap:4px}.list-action-btn[data-v-9968e9fe]{width:28px;height:28px}.list-col-checkbox[data-v-9968e9fe]{width:24px;min-width:24px}}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:50%;position:absolute;top:50%;transform:translate(-45%,-60%) rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}.img-card[data-v-ddf49ce2]{width:100%;height:22vh;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-ddf49ce2] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-ddf49ce2] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-ddf49ce2]:hover{transform:scale(1.05)}.image-preview[data-v-ddf49ce2],.video-preview[data-v-ddf49ce2]{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-ddf49ce2]{cursor:pointer}.img-card:hover .file-icon[data-v-ddf49ce2],.img-card:hover .image-preview[data-v-ddf49ce2],.img-card:hover .video-preview[data-v-ddf49ce2]{transform:scale(1.08)}.image-preview[data-v-ddf49ce2]:hover{opacity:.8}.file-short-info[data-v-ddf49ce2]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-ddf49ce2]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-ddf49ce2],.success-tag[data-v-ddf49ce2]{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-ddf49ce2]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-ddf49ce2]{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-ddf49ce2]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-ddf49ce2]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-ddf49ce2]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-ddf49ce2]{cursor:pointer}.card-bottom-overlay[data-v-ddf49ce2]{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-ddf49ce2]{display:flex;align-items:center;justify-content:center}.file-name[data-v-ddf49ce2]{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-ddf49ce2]{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-ddf49ce2]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-ddf49ce2],.action-bar-right[data-v-ddf49ce2]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-ddf49ce2]{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-ddf49ce2]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-ddf49ce2]:active{transform:scale(.95)}.action-btn-danger[data-v-ddf49ce2]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-ddf49ce2]{display:none!important}}@keyframes skeleton-shimmer-ddf49ce2{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-ddf49ce2]{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-ddf49ce2 1.5s ease-in-out infinite}.error-wrapper[data-v-ddf49ce2]{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-ddf49ce2]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-ddf49ce2]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-20e5d6b4]{width:100%;height:22vh;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-20e5d6b4] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-20e5d6b4] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-20e5d6b4]:hover{transform:scale(1.05)}.folder-card[data-v-20e5d6b4]{cursor:pointer}.folder-icon[data-v-20e5d6b4]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-20e5d6b4]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-20e5d6b4]{transform:scale(1.08)}.card-bottom-overlay[data-v-20e5d6b4]{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-20e5d6b4]{display:flex;align-items:center;justify-content:center}.file-name[data-v-20e5d6b4]{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-20e5d6b4]{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-20e5d6b4]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-20e5d6b4],.action-bar-right[data-v-20e5d6b4]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-20e5d6b4]{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-20e5d6b4]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-20e5d6b4]:active{transform:scale(.95)}.action-btn-danger[data-v-20e5d6b4]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-20e5d6b4]{display:none!important}}@keyframes skeleton-shimmer-71848b62{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-71848b62{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-71848b62]{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-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-info[data-v-71848b62]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-list-item[data-v-71848b62]{animation:skeleton-pulse-71848b62 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-71848b62]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-text-long[data-v-71848b62]{width:80%}.skeleton-text-long[data-v-71848b62],.skeleton-text-short[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-text-short[data-v-71848b62]{width:60px}.skeleton-text-tiny[data-v-71848b62]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-71848b62],.skeleton-text-tiny[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-tag[data-v-71848b62]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-71848b62]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-71848b62]{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-71848b62]{display:flex;align-items:center}.list-col-checkbox[data-v-71848b62],.list-col-preview[data-v-71848b62]{justify-content:center}@media (max-width:768px){.list-item[data-v-71848b62]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-71848b62],.list-col-channel-name[data-v-71848b62],.list-col-channel[data-v-71848b62],.list-col-date[data-v-71848b62],.list-col-size[data-v-71848b62],.list-col-tags[data-v-71848b62]{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-062d5f10]{flex-shrink:0}.filter-trigger[data-v-062d5f10]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-062d5f10]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-062d5f10]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-062d5f10] .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-062d5f10]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-062d5f10]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-062d5f10]:last-of-type{border-bottom:none}.filter-title[data-v-062d5f10]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-062d5f10],.filter-options[data-v-062d5f10] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-062d5f10] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-062d5f10] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-062d5f10] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-062d5f10] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-062d5f10]{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-062d5f10]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-062d5f10] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-062d5f10]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-062d5f10]{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-062d5f10]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-062d5f10]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-062d5f10]{min-width:160px;max-height:320px}.filter-section[data-v-062d5f10]{padding:6px 10px}.filter-title[data-v-062d5f10]{font-size:11px;margin-bottom:4px}.filter-options[data-v-062d5f10] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-062d5f10] .el-checkbox__label{font-size:12px}.header-icon[data-v-062d5f10]{font-size:1.2em}}#themeToggle[data-v-4c6ec90c]{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-4c6ec90c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-4c6ec90c]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-4c6ec90c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-4c6ec90c]{transform:rotate(40deg)}.theme_toggle_g[data-v-4c6ec90c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-4c6ec90c],.icon-fade-leave-active[data-v-4c6ec90c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-4c6ec90c],.icon-fade-leave-from[data-v-4c6ec90c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-4c6ec90c]{display:inline-block}.tabs[data-v-4673d77a]{display:flex;align-items:center;justify-content:center;gap:12px}.title[data-v-4673d77a]{display:flex;align-items:center;gap:10px;font-size:1.2em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:6px 14px;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-4673d77a]: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-4673d77a]{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-4673d77a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4673d77a]{cursor:pointer;font-size:1.5em;transition:all .3s ease;color:var(--admin-container-color);padding:6px 10px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4673d77a],.tabs-dropdown-link[data-v-4673d77a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.title[data-v-4673d77a]{font-size:1.3em;padding:4px 10px;gap:6px}.tabs-dropdown-link[data-v-4673d77a]{font-size:1.3em;padding:4px 8px}}.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-5c4ee283]{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-5c4ee283] .el-container,[data-v-5c4ee283] .el-main{overflow:visible}[data-v-5c4ee283] .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-5c4ee283]{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-5c4ee283]{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-5c4ee283]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-5c4ee283]{font-size:.95em}.header-content .actions[data-v-5c4ee283]{gap:10px}.search-card[data-v-5c4ee283] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-5c4ee283] .el-input__wrapper{padding:0 10px}.search-card[data-v-5c4ee283] .el-input__inner:focus{width:65vw}}.header-content[data-v-5c4ee283]: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-5c4ee283]: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-5c4ee283]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-5c4ee283]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-5c4ee283]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 10px;margin-bottom:4px}@media (max-width:768px){.breadcrumb-container[data-v-5c4ee283]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-5c4ee283]{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}.stats-badge[data-v-5c4ee283]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-5c4ee283]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-5c4ee283]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-5c4ee283]{font-size:9px}}.header-content .actions[data-v-5c4ee283]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-5c4ee283]{margin-top:10px}}.header-content .actions i[data-v-5c4ee283]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-5c4ee283]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-5c4ee283]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-5c4ee283]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-5c4ee283]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-5c4ee283]{color:var(--admin-purple)}.batch-action-item-icon[data-v-5c4ee283]{width:20px;margin-right:5px}.search-area[data-v-5c4ee283]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-5c4ee283]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-5c4ee283]{display:flex;align-items:center}.search-card[data-v-5c4ee283] .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-5c4ee283] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-5c4ee283] .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-5c4ee283] .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-5c4ee283] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-5c4ee283] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-5c4ee283] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-5c4ee283] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-5c4ee283] .el-input__inner:focus{width:55vw}}.search-icon[data-v-5c4ee283]{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-5c4ee283]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-5c4ee283]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-5c4ee283] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-5c4ee283]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-5c4ee283]{margin-top:12vh}}.content[data-v-5c4ee283]{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}.empty-state[data-v-5c4ee283]{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-5c4ee283]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-5c4ee283]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-5c4ee283]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-5c4ee283]{padding:80px 20px}@media (max-width:768px){.content[data-v-5c4ee283]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-5c4ee283]{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-5c4ee283]{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-5c4ee283]{display:flex;align-items:center}.list-col-checkbox[data-v-5c4ee283]{justify-content:center;min-width:40px}.custom-checkbox[data-v-5c4ee283]{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-5c4ee283]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-5c4ee283],.custom-checkbox.indeterminate[data-v-5c4ee283]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-5c4ee283]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-5c4ee283]{display:none}}.pagination-container[data-v-5c4ee283]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-5c4ee283]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-5c4ee283] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-5c4ee283] .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-5c4ee283] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-5c4ee283] .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-5c4ee283] .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-5c4ee283] .btn-next,.pagination-container[data-v-5c4ee283] .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-5c4ee283] .btn-next:hover,.pagination-container[data-v-5c4ee283] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-5c4ee283]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-5c4ee283]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-5c4ee283]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-5c4ee283]{width:50px}.page-jump .jump-input[data-v-5c4ee283] .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-5c4ee283] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-5c4ee283]{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-5c4ee283]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-5c4ee283]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-5c4ee283]{order:0}.pagination-right[data-v-5c4ee283]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-5c4ee283]{width:45px}}.refresh-btn[data-v-5c4ee283]{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-5c4ee283]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-5c4ee283]{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-5c4ee283]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-5c4ee283] .btn-prev{left:8px}[data-v-5c4ee283] .btn-next,[data-v-5c4ee283] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-5c4ee283] .btn-next{right:8px}@media (min-width:768px){[data-v-5c4ee283] .el-pagination.is-background .btn-next,[data-v-5c4ee283] .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-5c4ee283] .el-pagination.is-background .btn-next:hover,[data-v-5c4ee283] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-5c4ee283]{margin:0 3px}.breadcrumb[data-v-5c4ee283]{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-5c4ee283]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-5c4ee283]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-5c4ee283]:hover{color:var(--admin-purple)}[data-v-5c4ee283] .el-breadcrumb__item{cursor:pointer}[data-v-5c4ee283] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-5c4ee283]{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-5c4ee283]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-5c4ee283]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-5c4ee283]{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-5c4ee283]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-5c4ee283]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-5c4ee283]{display:flex}.desktop-only[data-v-5c4ee283]{display:none!important}.breadcrumb-container[data-v-5c4ee283]{padding:0;margin-left:0}} \ No newline at end of file +.mobile-drawer-overlay[data-v-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{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-2d8e83ec]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-2d8e83ec]: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-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-2d8e83ec]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-2d8e83ec]{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-2d8e83ec]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-2d8e83ec]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-2d8e83ec]{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-2d8e83ec]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-2d8e83ec]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-2d8e83ec]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-2d8e83ec]{animation:slideInLeft-2d8e83ec .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-2d8e83ec]{animation:slideOutLeft-2d8e83ec .2s ease-in}.drawer-slide-enter-from[data-v-2d8e83ec],.drawer-slide-leave-to[data-v-2d8e83ec]{opacity:0}@keyframes slideInLeft-2d8e83ec{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-2d8e83ec{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-7579ad69]{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-7579ad69]{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-7579ad69]{--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-7579ad69]{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-7579ad69]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-7579ad69]{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-7579ad69]{color:#f0f0f0}.bottom-sheet-content[data-v-7579ad69]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-7579ad69]{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-7579ad69]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-7579ad69]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-7579ad69]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-7579ad69]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-7579ad69],.bottom-sheet-danger[data-v-7579ad69]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-7579ad69]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-7579ad69]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-7579ad69]{animation:slideUp-7579ad69 .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-7579ad69]{animation:slideDown-7579ad69 .2s ease-in}.bottom-sheet-enter-from[data-v-7579ad69],.bottom-sheet-leave-to[data-v-7579ad69]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-7579ad69],.bottom-sheet-leave-to .bottom-sheet[data-v-7579ad69]{transform:translateY(100%)}@keyframes slideUp-7579ad69{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-7579ad69{0%{transform:translateY(0)}to{transform:translateY(100%)}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.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-dacf7742]{padding:0}.tab-content[data-v-dacf7742]{padding:20px}.tab-description[data-v-dacf7742]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-dacf7742]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-dacf7742]{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-dacf7742]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-dacf7742]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-dacf7742],.tags-to-add-section[data-v-dacf7742]{margin-bottom:20px}.common-tags-section h4[data-v-dacf7742],.tags-to-add-section h4[data-v-dacf7742]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-dacf7742]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-dacf7742]{cursor:default}.empty-message[data-v-dacf7742]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-dacf7742]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-8b4291b4]{padding:10px 0}.input-section[data-v-8b4291b4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-8b4291b4]{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-8b4291b4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-8b4291b4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-8b4291b4],.popular-tags-section[data-v-8b4291b4]{margin-bottom:20px}.current-tags-section h4[data-v-8b4291b4],.popular-tags-section h4[data-v-8b4291b4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-8b4291b4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-8b4291b4]{cursor:default}.tag-item.clickable[data-v-8b4291b4]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-8b4291b4]:hover{transform:translateY(-2px)}.empty-message[data-v-8b4291b4]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-8b4291b4]{display:flex;justify-content:flex-end}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.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-0dc381fc]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-0dc381fc]{margin-left:0!important}.video-preview[data-v-0dc381fc]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-0dc381fc],.video-preview[data-v-0dc381fc]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-0dc381fc]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-0dc381fc] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-0dc381fc]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-0dc381fc]{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-0dc381fc]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-0dc381fc] .description-item{word-break:break-all;word-wrap:break-word}[data-v-0dc381fc] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}@media (max-width:768px){.detail-actions[data-v-0dc381fc]{justify-content:center}}.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-9968e9fe]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;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-9968e9fe]:last-child{border-bottom:none}.list-item[data-v-9968e9fe]:hover{background:var(--el-fill-color-light)}.list-col[data-v-9968e9fe]{display:flex;align-items:center}.list-col-checkbox[data-v-9968e9fe]{justify-content:center;min-width:40px}.list-col-preview[data-v-9968e9fe]{justify-content:center;cursor:pointer}.list-col-name[data-v-9968e9fe]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-9968e9fe]:hover{color:#38bdf8}.filename-ellipsis[data-v-9968e9fe]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-9968e9fe]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-9968e9fe]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-9968e9fe],.list-col-channel[data-v-9968e9fe],.list-col-date[data-v-9968e9fe],.list-col-size[data-v-9968e9fe]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-9968e9fe]{font-size:13px}.address-box[data-v-9968e9fe],.channel-name-box[data-v-9968e9fe]{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-9968e9fe]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-9968e9fe]{width:70px}.address-box[data-v-9968e9fe]::-webkit-scrollbar,.channel-name-box[data-v-9968e9fe]::-webkit-scrollbar{display:none}.list-col-tags[data-v-9968e9fe]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-9968e9fe]{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-9968e9fe]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-9968e9fe]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-9968e9fe]{font-size:10px;color:#fff}.color-tag[data-v-9968e9fe]{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-9968e9fe]{min-width:30px;text-align:center}.list-empty[data-v-9968e9fe]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-9968e9fe]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-9968e9fe]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-9968e9fe]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-9968e9fe]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-9968e9fe]{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-9968e9fe]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-9968e9fe]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-9968e9fe]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-9968e9fe],.list-col-channel-name[data-v-9968e9fe],.list-col-channel[data-v-9968e9fe],.list-col-date[data-v-9968e9fe],.list-col-size[data-v-9968e9fe],.list-col-tags[data-v-9968e9fe]{display:none}.list-col-actions[data-v-9968e9fe]{gap:4px}.list-action-btn[data-v-9968e9fe]{width:28px;height:28px}.list-col-checkbox[data-v-9968e9fe]{width:24px;min-width:24px}}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:50%;position:absolute;top:50%;transform:translate(-45%,-60%) rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}.img-card[data-v-ddf49ce2]{width:100%;height:22vh;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-ddf49ce2] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-ddf49ce2] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-ddf49ce2]:hover{transform:scale(1.05)}.image-preview[data-v-ddf49ce2],.video-preview[data-v-ddf49ce2]{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-ddf49ce2]{cursor:pointer}.img-card:hover .file-icon[data-v-ddf49ce2],.img-card:hover .image-preview[data-v-ddf49ce2],.img-card:hover .video-preview[data-v-ddf49ce2]{transform:scale(1.08)}.image-preview[data-v-ddf49ce2]:hover{opacity:.8}.file-short-info[data-v-ddf49ce2]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-ddf49ce2]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-ddf49ce2],.success-tag[data-v-ddf49ce2]{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-ddf49ce2]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-ddf49ce2]{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-ddf49ce2]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-ddf49ce2]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-ddf49ce2]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-ddf49ce2]{cursor:pointer}.card-bottom-overlay[data-v-ddf49ce2]{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-ddf49ce2]{display:flex;align-items:center;justify-content:center}.file-name[data-v-ddf49ce2]{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-ddf49ce2]{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-ddf49ce2]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-ddf49ce2],.action-bar-right[data-v-ddf49ce2]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-ddf49ce2]{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-ddf49ce2]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-ddf49ce2]:active{transform:scale(.95)}.action-btn-danger[data-v-ddf49ce2]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-ddf49ce2]{display:none!important}}@keyframes skeleton-shimmer-ddf49ce2{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-ddf49ce2]{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-ddf49ce2 1.5s ease-in-out infinite}.error-wrapper[data-v-ddf49ce2]{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-ddf49ce2]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-ddf49ce2]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-20e5d6b4]{width:100%;height:22vh;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-20e5d6b4] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-20e5d6b4] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-20e5d6b4]:hover{transform:scale(1.05)}.folder-card[data-v-20e5d6b4]{cursor:pointer}.folder-icon[data-v-20e5d6b4]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-20e5d6b4]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-20e5d6b4]{transform:scale(1.08)}.card-bottom-overlay[data-v-20e5d6b4]{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-20e5d6b4]{display:flex;align-items:center;justify-content:center}.file-name[data-v-20e5d6b4]{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-20e5d6b4]{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-20e5d6b4]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-20e5d6b4],.action-bar-right[data-v-20e5d6b4]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-20e5d6b4]{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-20e5d6b4]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-20e5d6b4]:active{transform:scale(.95)}.action-btn-danger[data-v-20e5d6b4]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-20e5d6b4]{display:none!important}}@keyframes skeleton-shimmer-71848b62{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-71848b62{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-71848b62]{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-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-info[data-v-71848b62]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-list-item[data-v-71848b62]{animation:skeleton-pulse-71848b62 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-71848b62]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-text-long[data-v-71848b62]{width:80%}.skeleton-text-long[data-v-71848b62],.skeleton-text-short[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-text-short[data-v-71848b62]{width:60px}.skeleton-text-tiny[data-v-71848b62]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-71848b62],.skeleton-text-tiny[data-v-71848b62]{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-71848b62 1.5s ease-in-out infinite}.skeleton-tag[data-v-71848b62]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-71848b62]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-71848b62]{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-71848b62]{display:flex;align-items:center}.list-col-checkbox[data-v-71848b62],.list-col-preview[data-v-71848b62]{justify-content:center}@media (max-width:768px){.list-item[data-v-71848b62]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-71848b62],.list-col-channel-name[data-v-71848b62],.list-col-channel[data-v-71848b62],.list-col-date[data-v-71848b62],.list-col-size[data-v-71848b62],.list-col-tags[data-v-71848b62]{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-062d5f10]{flex-shrink:0}.filter-trigger[data-v-062d5f10]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-062d5f10]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-062d5f10]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-062d5f10] .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-062d5f10]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-062d5f10]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-062d5f10]:last-of-type{border-bottom:none}.filter-title[data-v-062d5f10]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-062d5f10],.filter-options[data-v-062d5f10] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-062d5f10] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-062d5f10] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-062d5f10] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-062d5f10] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-062d5f10]{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-062d5f10]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-062d5f10] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-062d5f10]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-062d5f10]{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-062d5f10]:hover:not(:disabled){background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-062d5f10]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-062d5f10]{min-width:160px;max-height:320px}.filter-section[data-v-062d5f10]{padding:6px 10px}.filter-title[data-v-062d5f10]{font-size:11px;margin-bottom:4px}.filter-options[data-v-062d5f10] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-062d5f10] .el-checkbox__label{font-size:12px}.header-icon[data-v-062d5f10]{font-size:1.2em}}#themeToggle[data-v-4c6ec90c]{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-4c6ec90c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-4c6ec90c]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-4c6ec90c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-4c6ec90c]{transform:rotate(40deg)}.theme_toggle_g[data-v-4c6ec90c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-4c6ec90c],.icon-fade-leave-active[data-v-4c6ec90c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-4c6ec90c],.icon-fade-leave-from[data-v-4c6ec90c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-4c6ec90c]{display:inline-block}.tabs[data-v-4673d77a]{display:flex;align-items:center;justify-content:center;gap:12px}.title[data-v-4673d77a]{display:flex;align-items:center;gap:10px;font-size:1.2em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:6px 14px;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-4673d77a]: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-4673d77a]{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-4673d77a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4673d77a]{cursor:pointer;font-size:1.5em;transition:all .3s ease;color:var(--admin-container-color);padding:6px 10px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4673d77a],.tabs-dropdown-link[data-v-4673d77a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.title[data-v-4673d77a]{font-size:1.3em;padding:4px 10px;gap:6px}.tabs-dropdown-link[data-v-4673d77a]{font-size:1.3em;padding:4px 8px}}.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-8820054c]{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-8820054c] .el-container,[data-v-8820054c] .el-main{overflow:visible}[data-v-8820054c] .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-8820054c]{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-8820054c]{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-8820054c]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-8820054c]{font-size:.95em}.header-content .actions[data-v-8820054c]{gap:10px}.search-card[data-v-8820054c] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8820054c] .el-input__wrapper{padding:0 10px}.search-card[data-v-8820054c] .el-input__inner:focus{width:65vw}}.header-content[data-v-8820054c]: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-8820054c]: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-8820054c]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-8820054c]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-8820054c]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 10px;margin-bottom:4px}@media (max-width:768px){.breadcrumb-container[data-v-8820054c]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-8820054c]{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}.stats-badge[data-v-8820054c]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-8820054c]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8820054c]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8820054c]{font-size:9px}}.header-content .actions[data-v-8820054c]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-8820054c]{margin-top:10px}}.header-content .actions i[data-v-8820054c]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-8820054c]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8820054c]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-8820054c]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-8820054c]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-8820054c]{color:var(--admin-purple)}.batch-action-item-icon[data-v-8820054c]{width:20px;margin-right:5px}.search-area[data-v-8820054c]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-8820054c]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-8820054c]{display:flex;align-items:center}.search-card[data-v-8820054c] .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-8820054c] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8820054c] .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-8820054c] .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-8820054c] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8820054c] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8820054c] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-8820054c] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-8820054c] .el-input__inner:focus{width:55vw}}.search-icon[data-v-8820054c]{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-8820054c]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8820054c]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-8820054c] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8820054c]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-8820054c]{margin-top:12vh}}.content[data-v-8820054c]{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}.empty-state[data-v-8820054c]{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-8820054c]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-8820054c]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-8820054c]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-8820054c]{padding:80px 20px}@media (max-width:768px){.content[data-v-8820054c]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-8820054c]{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-8820054c]{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-8820054c]{display:flex;align-items:center}.list-col-checkbox[data-v-8820054c]{justify-content:center;min-width:40px}.custom-checkbox[data-v-8820054c]{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-8820054c]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-8820054c],.custom-checkbox.indeterminate[data-v-8820054c]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-8820054c]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-8820054c]{display:none}}.pagination-container[data-v-8820054c]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8820054c]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8820054c] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-8820054c] .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-8820054c] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-8820054c] .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-8820054c] .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-8820054c] .btn-next,.pagination-container[data-v-8820054c] .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-8820054c] .btn-next:hover,.pagination-container[data-v-8820054c] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-8820054c]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-8820054c]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-8820054c]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-8820054c]{width:50px}.page-jump .jump-input[data-v-8820054c] .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-8820054c] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-8820054c]{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-8820054c]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-8820054c]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-8820054c]{order:0}.pagination-right[data-v-8820054c]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-8820054c]{width:45px}}.refresh-btn[data-v-8820054c]{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-8820054c]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-8820054c]{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-8820054c]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-8820054c] .btn-prev{left:8px}[data-v-8820054c] .btn-next,[data-v-8820054c] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-8820054c] .btn-next{right:8px}@media (min-width:768px){[data-v-8820054c] .el-pagination.is-background .btn-next,[data-v-8820054c] .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-8820054c] .el-pagination.is-background .btn-next:hover,[data-v-8820054c] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-8820054c]{margin:0 3px}.breadcrumb[data-v-8820054c]{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-8820054c]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-8820054c]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-8820054c]:hover{color:var(--admin-purple)}[data-v-8820054c] .el-breadcrumb__item{cursor:pointer}[data-v-8820054c] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-8820054c]{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-8820054c]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-8820054c]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-8820054c]{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-8820054c]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8820054c]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8820054c]{display:flex}.desktop-only[data-v-8820054c]{display:none!important}.breadcrumb-container[data-v-8820054c]{padding:0;margin-left:0}} \ No newline at end of file diff --git a/css/743.ab3d1775.css.gz b/css/257.0e3de612.css.gz similarity index 84% rename from css/743.ab3d1775.css.gz rename to css/257.0e3de612.css.gz index ed9ad09a97a8166fd67731fe6db96f9c4dea47b1..ed83584813ef1207855a823911d08ab6051229bc 100644 GIT binary patch delta 2126 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 E00BHJqyPW_ diff --git a/index.html b/index.html index 8481943..edf27d2 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz index 9fa822c23ad32f2b3abe2d88b9475a8d2436f18f..af6a94fb203bab6979d8c991dc150e6f774bb431 100644 GIT binary patch literal 511 zcmVh{jC zEe(!NV|EM{E;x3|XGtrM(>DcVaN<=z4YsHDquH9T|)P8s`x#C3c~O z-Yae>cIS*coc0t=dO^21@h#3+7T`M7J`1&{!9Ze)>T>LAU`z1@@pmUG$&Ni%XToJM zC*^Dr3^o`KmK%%$Qq-j=9#f(15O&#!!B9;3?fS#&X1%)2ACstLF+<;?P<@{-)%9w< zS(*#raYd(<=ycg_ySd(=+1}4d6hejV8RQ1~6YnWob{F=;E$v{sI zI8tb#D2T3wL=YtFoi3IJ;fdLk$Q}Ng1uu)1H)G}s)uBRF$B@Pk_8#!42m+T!?;{{r;KV++^=001K$ B^f>?k literal 510 zcmVrNYrVY>~oL|bZP zQIlu~{`(nMMxC3ba)zBiCZ& zuDBA%tYwY`{vF*^i{Hi1o8mJKQL$@13eXf71J~mAOO2+-2T)K0)?#wFiLIF20kiit7a~{D`W*2&h zUU5fhIAz@8yrX3D3%b>jZ*{`50yn7sNvJ)I1~OAp&&RGtwv=8F|8Sy_?AT*-B3xEW zQZ5$3V25dMxx*wNCtZu`K3Cd~VOvZX45eINuRmN|tuL<2`z#t+Ezq|pRE%Y}(YWsP z\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return t.test(e)?{valid:!1,error:"目标目录包含非法字符,请使用合法的路径格式"}:e.includes("//")?{valid:!1,error:"目标目录不能包含连续的斜杠"}:{valid:!0}}a.d(t,{G:function(){return i}})},2833:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return Ha}});var i=a(6768),n=a(5130),s=a(4232);const r={class:"mobile-drawer-header"},o={class:"mobile-drawer-content"},l=["onClick"];function c(e,t,a,c,d,h){const u=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.Wv)(i.Im,{to:"body"},[(0,i.bF)(n.eB,{name:"drawer-slide"},{default:(0,i.k6)(()=>[a.modelValue?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>h.close&&h.close(...e))},[(0,i.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,i.Lk)("div",r,[t[4]||(t[4]=(0,i.Lk)("span",{class:"mobile-drawer-title"},"目录导航",-1)),(0,i.bF)(u,{icon:"times",class:"mobile-drawer-close",onClick:h.close},null,8,["onClick"])]),(0,i.Lk)("div",o,[(0,i.Lk)("div",{class:(0,s.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>h.navigate(""))},[(0,i.bF)(u,{icon:"home",class:"mobile-drawer-item-icon"}),t[5]||(t[5]=(0,i.Lk)("span",null,"根目录",-1))],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(h.pathParts,(e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:(0,s.C4)(["mobile-drawer-item",{active:t===h.pathParts.length-1}]),style:(0,s.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>h.navigate(h.pathParts.slice(0,t+1).join("/"))},[(0,i.bF)(u,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e),1)],14,l))),128)),a.currentPath?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>h.goBack&&h.goBack(...e))},[(0,i.bF)(u,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),t[6]||(t[6]=(0,i.Lk)("span",null,"返回上一级",-1))])):(0,i.Q3)("",!0)])])])):(0,i.Q3)("",!0)]),_:1})])}a(8111),a(2489);var d={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()}}},h=a(1241);const u=(0,h.A)(d,[["render",c],["__scopeId","data-v-2d8e83ec"]]);var f=u;const m={class:"bottom-sheet-header"},p={class:"bottom-sheet-title"},g={class:"bottom-sheet-content"};function b(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.Wv)(i.Im,{to:"body"},[(0,i.bF)(n.eB,{name:"bottom-sheet"},{default:(0,i.k6)(()=>[a.modelValue?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>l.close&&l.close(...e))},[(0,i.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,n.D$)(()=>{},["stop"]))},[(0,i.Lk)("div",m,[t[10]||(t[10]=(0,i.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,i.Lk)("span",p,(0,s.v_)(a.title),1)]),(0,i.Lk)("div",g,[a.isFolder?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>l.handleAction("folderCopy"))},[(0,i.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[16]||(t[16]=(0,i.Lk)("span",null,"复制链接",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>l.handleAction("move"))},[(0,i.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[17]||(t[17]=(0,i.Lk)("span",null,"移动文件夹",-1))])],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>l.handleAction("detail"))},[(0,i.bF)(c,{icon:"info-circle",class:"bottom-sheet-icon"}),t[11]||(t[11]=(0,i.Lk)("span",null,"查看详情",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>l.handleAction("copy"))},[(0,i.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[12]||(t[12]=(0,i.Lk)("span",null,"复制链接",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>l.handleAction("download"))},[(0,i.bF)(c,{icon:"download",class:"bottom-sheet-icon"}),t[13]||(t[13]=(0,i.Lk)("span",null,"下载文件",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>l.handleAction("move"))},[(0,i.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[14]||(t[14]=(0,i.Lk)("span",null,"移动文件",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>l.handleAction("tag"))},[(0,i.bF)(c,{icon:"tags",class:"bottom-sheet-icon"}),t[15]||(t[15]=(0,i.Lk)("span",null,"标签管理",-1))])],64)),(0,i.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>l.handleAction("delete"))},[(0,i.bF)(c,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,i.Lk)("span",null,(0,s.v_)(a.isFolder?"删除文件夹":"删除文件"),1)])])])])):(0,i.Q3)("",!0)]),_:1})])}var v={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 k=(0,h.A)(v,[["render",b],["__scopeId","data-v-7579ad69"]]);var y=k,_=a(9267),w=(a(5331),a(5616),a(4275)),F=a(9559),C=a(2687),T=(a(8785),a(9623)),x=(a(6711),a(47));a(9648);const S={class:"batch-tag-container"},L={class:"tab-content"},E={class:"tab-description"},A={class:"input-section"},I={key:0,class:"suggestions-panel"},D=["onClick"],U={class:"tags-to-add-section"},z={key:0,class:"tags-container"},B={key:1,class:"empty-message"},O={class:"action-buttons"},W={class:"tab-content"},$={key:0,class:"common-tags-section"},P={class:"tags-container"},R={key:1,class:"empty-message"},N={class:"tab-content"},j={class:"tab-description"},V={class:"action-buttons"};function M(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=w.v$,m=F.KR,p=w.q,g=_.kZ;return(0,i.uX)(),(0,i.Wv)(g,{title:"批量标签管理",modelValue:l.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{default:(0,i.k6)(()=>[(0,i.Lk)("div",S,[(0,i.bF)(p,{modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>o.activeTab=e),type:"border-card"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"添加",name:"add"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",L,[(0,i.Lk)("p",E,"为选中的 "+(0,s.v_)(l.fileCount)+" 个文件添加标签",1),(0,i.Lk)("div",A,[(0,i.bF)(h,{modelValue:o.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputTag=e),placeholder:"输入标签名称",onKeyup:(0,n.jR)(l.handleAddInputTag,["enter"]),onInput:l.handleInputChange,clearable:""},{append:(0,i.k6)(()=>[(0,i.bF)(d,{onClick:l.handleAddInputTag,type:"primary"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,i.uX)(),(0,i.CE)("div",I,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.suggestions,e=>((0,i.uX)(),(0,i.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,D))),128))])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",U,[t[3]||(t[3]=(0,i.Lk)("h4",null,"待添加的标签",-1)),o.tagsToAdd.length>0?((0,i.uX)(),(0,i.CE)("div",z,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.tagsToAdd,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.removeFromToAdd(e),class:"tag-item"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,i.uX)(),(0,i.CE)("div",B," 暂无待添加标签 "))]),(0,i.Lk)("div",O,[(0,i.bF)(d,{type:"primary",onClick:l.executeAddTags,loading:o.loading,disabled:0===o.tagsToAdd.length},{default:(0,i.k6)(()=>[...t[4]||(t[4]=[(0,i.eW)(" 添加到所有文件 ",-1)])]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,i.bF)(f,{label:"移除",name:"remove"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",W,[t[6]||(t[6]=(0,i.Lk)("p",{class:"tab-description"},"移除选中文件的共有标签",-1)),o.commonTags.length>0?((0,i.uX)(),(0,i.CE)("div",$,[t[5]||(t[5]=(0,i.Lk)("h4",null,"共有标签",-1)),(0,i.Lk)("div",P,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.commonTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,i.uX)(),(0,i.CE)("div",R," 选中的文件没有共有标签 "))])]),_:1}),(0,i.bF)(f,{label:"清空",name:"clear"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",N,[(0,i.Lk)("p",j,"清空选中的 "+(0,s.v_)(l.fileCount)+" 个文件的所有标签",1),(0,i.bF)(m,{title:"⚠️警告",type:"warning",description:"此操作将清空所有选中文件的标签,且不可恢复",closable:!1,style:{"margin-bottom":"20px"},center:""}),(0,i.Lk)("div",V,[(0,i.bF)(d,{type:"danger",onClick:l.handleClearAllTags,loading:o.loading},{default:(0,i.k6)(()=>[...t[7]||(t[7]=[(0,i.eW)(" 确认清空所有标签 ",-1)])]),_:1},8,["onClick","loading"])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","width","onClose"])}a(4114),a(1701),a(3110);var X=a(1219),Z=a(2933),K=a(797),G={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,K.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),X.nk.error("加载共有标签失败")}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,K.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 X.nk.warning("标签已在列表中"),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,K.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("批量添加标签失败");{const t=await e.json();if(!(t.success||t.updated>0))throw new Error("批量添加标签失败");X.nk.success(`成功为 ${t.updated} 个文件添加标签`),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),X.nk.error("批量添加标签失败")}finally{this.loading=!1}}else X.nk.warning("请先添加要批量添加的标签")},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,K.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("移除标签失败");{const e=await t.json();if(!(e.success||e.updated>0))throw new Error("移除标签失败");X.nk.success(`成功从 ${e.updated} 个文件中移除标签`),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),X.nk.error("移除标签失败")}finally{this.loading=!1}},handleClearAllTags(){Z.s.confirm(`确定要清空选中的 ${this.fileCount} 个文件的所有标签吗?此操作不可恢复。`,"确认清空",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{X.nk.info("已取消清空操作")})},async executeClearTags(){this.loading=!0;try{const e=await(0,K.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("清空标签失败");{const t=await e.json();if(!(t.success||t.updated>0))throw new Error("清空标签失败");X.nk.success(`成功清空 ${t.updated} 个文件的标签`),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),X.nk.error("清空标签失败")}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const H=(0,h.A)(G,[["render",M],["__scopeId","data-v-dacf7742"]]);var q=H,Q=a(813);a(4896);const Y={class:"tag-management-container"},J={class:"input-section"},ee={key:0,class:"suggestions-panel"},te=["onClick"],ae={class:"current-tags-section"},ie={key:0,class:"tags-container"},ne={key:1,class:"empty-message"},se={class:"popular-tags-section"},re={key:0,class:"tags-container"},oe={key:1,class:"empty-message"},le={key:2,class:"empty-message"},ce={class:"dialog-footer"};function de(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=(0,i.g2)("Loading"),m=Q.tk,p=_.kZ;return(0,i.uX)(),(0,i.Wv)(p,{title:"标签管理",modelValue:l.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",ce,[(0,i.bF)(d,{onClick:l.handleClose},{default:(0,i.k6)(()=>[...t[5]||(t[5]=[(0,i.eW)("关闭",-1)])]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",Y,[(0,i.Lk)("div",J,[(0,i.bF)(h,{modelValue:o.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputTag=e),placeholder:"输入标签名称",onKeyup:(0,n.jR)(l.handleAddTag,["enter"]),onInput:l.handleInputChange,clearable:""},{append:(0,i.k6)(()=>[(0,i.bF)(d,{onClick:l.handleAddTag,type:"primary"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,i.uX)(),(0,i.CE)("div",ee,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.suggestions,e=>((0,i.uX)(),(0,i.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,te))),128))])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",ae,[t[2]||(t[2]=(0,i.Lk)("h4",null,"当前标签",-1)),o.currentTags.length>0?((0,i.uX)(),(0,i.CE)("div",ie,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveTag(e),class:"tag-item"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,i.uX)(),(0,i.CE)("div",ne," 暂无标签 "))]),(0,i.Lk)("div",se,[t[4]||(t[4]=(0,i.Lk)("h4",null,"常用标签",-1)),o.popularTags.length>0?((0,i.uX)(),(0,i.CE)("div",re,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.popularTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,onClick:t=>l.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):o.loadingPopularTags?((0,i.uX)(),(0,i.CE)("div",oe,[(0,i.bF)(m,{class:"is-loading"},{default:(0,i.k6)(()=>[(0,i.bF)(f)]),_:1}),t[3]||(t[3]=(0,i.eW)(" 加载中... ",-1))])):((0,i.uX)(),(0,i.CE)("div",le," 暂无常用标签 "))])])]),_:1},8,["modelValue","width","onClose"])}var he=a(7477),ue={name:"TagManagementDialog",components:{Loading:he.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,K.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),X.nk.error("加载标签失败")}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,K.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,K.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 X.nk.warning("标签已存在"),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,K.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||"添加标签失败")}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,X.nk.success("标签添加成功"),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),X.nk.error(t.message||"添加标签失败")}}},async handleRemoveTag(e){try{const t=await(0,K.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("删除标签失败");{const e=await t.json();this.currentTags=e.tags||[],X.nk.success("标签删除成功"),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),X.nk.error("删除标签失败")}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const fe=(0,h.A)(ue,[["render",de],["__scopeId","data-v-8b4291b4"]]);var me=fe,pe=a(5558),ge=(a(8075),a(6810)),be=(a(4396),a(4885),a(9869)),ve=(a(415),a(3565),a(7009));a(8450);const ke={class:"detail-actions"},ye={class:"preview-section"},_e={class:"preview-content"},we=["src"],Fe=["src"],Ce={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},Te={key:1,style:{color:"#909399"}};function xe(e,t,a,n,r,o){const l=(0,i.g2)("font-awesome-icon"),c=x.S2,d=T.WK,h=w.v$,u=w.q,f=ve.Zq,m=be.MF,p=C.u,g=be.TS,b=_.kZ;return(0,i.uX)(),(0,i.Wv)(b,{title:"文件详情",modelValue:o.visible,"onUpdate:modelValue":t[14]||(t[14]=e=>o.visible=e),width:o.dialogWidth},{default:(0,i.k6)(()=>[(0,i.Lk)("div",ke,[(0,i.bF)(c,{type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"download",style:{"margin-right":"3px"}}),t[15]||(t[15]=(0,i.eW)(" 下载 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"tags",style:{"margin-right":"3px"}}),t[16]||(t[16]=(0,i.eW)(" 标签 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"ban",style:{"margin-right":"3px"}}),t[17]||(t[17]=(0,i.eW)(" 黑名单 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"user-plus",style:{"margin-right":"3px"}}),t[18]||(t[18]=(0,i.eW)(" 白名单 ",-1))]),_:1}),(0,i.bF)(c,{type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"trash-alt",style:{"margin-right":"3px"}}),t[19]||(t[19]=(0,i.eW)(" 删除 ",-1))]),_:1})]),(0,i.bF)(u,{modelValue:r.activeTab,"onUpdate:modelValue":t[12]||(t[12]=e=>r.activeTab=e),onTabClick:o.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:"原始链接",name:"originUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[5]||(t[5]=e=>a.urls.originUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"Markdown",name:"mdUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[6]||(t[6]=e=>a.urls.mdUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"HTML",name:"htmlUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>a.urls.htmlUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"BBCode",name:"bbUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[8]||(t[8]=e=>a.urls.bbUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,i.uX)(),(0,i.Wv)(h,{key:0,label:"TG File ID",name:"tgId"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.tgId=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0),a.file?.metadata?.S3Location?((0,i.uX)(),(0,i.Wv)(h,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.S3Location=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,i.uX)(),(0,i.Wv)(h,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",_e,[o.isVideo?((0,i.uX)(),(0,i.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[13]||(t[13]=(...e)=>o.openImageLink&&o.openImageLink(...e))},null,8,we)):o.isAudio?((0,i.uX)(),(0,i.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Fe)):o.isImage?((0,i.uX)(),(0,i.Wv)(f,{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,i.uX)(),(0,i.Wv)(l,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,i.bF)(g,{border:"",column:o.descColumn},{default:(0,i.k6)(()=>[(0,i.bF)(m,{label:"文件名"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileName||a.file?.name),1)]),_:1}),(0,i.bF)(m,{label:"文件类型"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileType||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"文件大小"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileSize?a.file.metadata.FileSize+" MB":"未知"),1)]),_:1}),(0,i.bF)(m,{label:"上传时间"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(o.uploadTime),1)]),_:1}),(0,i.bF)(m,{label:"渠道类型/名称"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.Channel||"未知")+" / "+(0,s.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1}),(0,i.bF)(m,{label:"访问状态/审查"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(o.accessType)+" / "+(0,s.v_)(a.file?.metadata?.Label||"无"),1)]),_:1}),(0,i.bF)(m,{label:"上传IP"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.UploadIP||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"上传地址"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.UploadAddress||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"文件标签"},{default:(0,i.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,i.uX)(),(0,i.CE)("div",Ce,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(a.file?.metadata?.Tags,e=>((0,i.uX)(),(0,i.Wv)(p,{key:e,size:"small"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1024))),128))])):((0,i.uX)(),(0,i.CE)("span",Te,"暂无标签"))]),_:1})]),_:1},8,["column"])]),_:1},8,["modelValue","width"])}var Se={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"],data(){return{activeTab:"originUrl"}},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():"未知"},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"正常(白名单)":"Block"===e?"已屏蔽(黑名单)":"adult"===t?"已屏蔽(审查不通过)":"正常"}},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(()=>{X.nk.success("链接已复制")})},openImageLink(){if(this.fileLink){const e=this.fileLink.replace(/\?from=admin$/,"");window.open(e,"_blank")}}}};const Le=(0,h.A)(Se,[["render",xe],["__scopeId","data-v-0dc381fc"]]);var Ee=Le,Ae=a(4880),Ie=(a(4318),a(7815)),De=(a(2907),a(8507));a(213);const Ue={class:"list-col list-col-checkbox"},ze=["src"],Be=["src"],Oe=["title"],We={class:"filename-start"},$e={class:"filename-end"},Pe={class:"list-col list-col-tags"},Re={key:1,class:"list-empty"},Ne={class:"list-col list-col-channel"},je={class:"list-col list-col-channel-name"},Ve={key:0,class:"channel-name-box"},Me={key:1,class:"list-empty"},Xe={class:"list-col list-col-address"},Ze={key:0,class:"address-box"},Ke={key:1,class:"list-empty"},Ge={class:"list-col list-col-size"},He={class:"list-col list-col-date"},qe={class:"list-col list-col-actions"};function Qe(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=De.R7;return(0,i.uX)(),(0,i.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,i.Lk)("div",Ue,[(0,i.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:o.localSelected}]),onClick:t[0]||(t[0]=(0,n.D$)((...e)=>l.toggleSelect&&l.toggleSelect(...e),["stop"]))},[o.localSelected?((0,i.uX)(),(0,i.Wv)(c,{key:0,icon:"check",class:"check-icon"})):(0,i.Q3)("",!0)],2)]),(0,i.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[l.isFolder?((0,i.uX)(),(0,i.Wv)(c,{key:0,icon:"folder-open",class:"list-folder-icon"})):l.isVideo?((0,i.uX)(),(0,i.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,ze)):l.isImage?((0,i.uX)(),(0,i.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Be)):((0,i.uX)(),(0,i.Wv)(c,{key:3,icon:"file",class:"list-file-icon"}))]),(0,i.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[(0,i.Lk)("span",{class:"filename-ellipsis",title:l.displayName},[(0,i.Lk)("span",We,(0,s.v_)(l.fileNameStart),1),(0,i.Lk)("span",$e,(0,s.v_)(l.fileNameEnd),1)],8,Oe)]),(0,i.Lk)("div",Pe,[!l.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:t,class:"color-tag",style:(0,s.Tr)({background:l.getTagColor(t)})},(0,s.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,i.uX)(),(0,i.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,s.Tr)({background:l.getTagColor(3)})},"+"+(0,s.v_)(a.item.metadata.Tags.length-3),5)):(0,i.Q3)("",!0)],64)):((0,i.uX)(),(0,i.CE)("span",Re,"-"))]),(0,i.Lk)("div",Ne,(0,s.v_)(l.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,i.Lk)("div",je,[!l.isFolder&&a.item.metadata?.ChannelName?((0,i.uX)(),(0,i.CE)("div",Ve,(0,s.v_)(a.item.metadata.ChannelName),1)):((0,i.uX)(),(0,i.CE)("span",Me,"-"))]),(0,i.Lk)("div",Xe,[!l.isFolder&&a.item.metadata?.UploadIP?((0,i.uX)(),(0,i.CE)("div",Ze,(0,s.v_)(a.item.metadata.UploadIP),1)):((0,i.uX)(),(0,i.CE)("span",Ke,"-"))]),(0,i.Lk)("div",Ge,(0,s.v_)(l.isFolder?"-":a.item.metadata?.FileSize?a.item.metadata.FileSize+" MB":"-"),1),(0,i.Lk)("div",He,(0,s.v_)(l.uploadDate),1),(0,i.Lk)("div",qe,[l.isFolder?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(d,{content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,n.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,i.bF)(c,{icon:"copy"})])]),_:1}),(0,i.bF)(d,{content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(c,{icon:"file-export"})])]),_:1})],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(d,{content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(c,{icon:"copy"})])]),_:1}),(0,i.bF)(d,{content:"下载",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,i.bF)(c,{icon:"download"})])]),_:1}),(0,i.bF)(d,{content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(c,{icon:"file-export"})])]),_:1})],64)),(0,i.bF)(d,{content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(c,{icon:"trash-alt"})])]),_:1})])],32)}var Ye={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.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():"-"}},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 Je=(0,h.A)(Ye,[["render",Qe],["__scopeId","data-v-9968e9fe"]]);var et=Je,tt=a(683),at=(a(5385),a(850));a(8736);const it={class:"file-short-info"},nt={key:0,class:"success-tag"},st={key:1,class:"fail-tag"},rt={key:2,class:"success-tag"},ot={key:3,class:"primary-tag"},lt={key:0,style:{"margin-left":"2px"}},ct={key:0,class:"skeleton-wrapper"},dt=["src"],ht={key:3,class:"file-preview"},ut={class:"card-bottom-overlay"},ft={class:"file-name-row"},mt={class:"file-name"},pt={class:"action-bar"},gt={class:"action-bar-left"},bt={class:"action-bar-right"};function vt(e,t,a,r,o,l){const c=at.dI,d=(0,i.g2)("font-awesome-icon"),h=ve.Zq,u=De.R7,f=tt.Ik;return(0,i.uX)(),(0,i.Wv)(f,{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,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>o.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",o.localSelected))},null,8,["modelValue"]),(0,i.Lk)("div",it,["White"===a.item.metadata?.ListType?((0,i.uX)(),(0,i.CE)("div",nt,(0,s.v_)(l.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,i.uX)(),(0,i.CE)("div",st,(0,s.v_)(l.channelTag),1)):((0,i.uX)(),(0,i.CE)("div",rt,(0,s.v_)(l.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,i.uX)(),(0,i.CE)("div",ot,[(0,i.bF)(d,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,i.eW)(" "+(0,s.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,i.uX)(),(0,i.CE)("span",lt," (+"+(0,s.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,i.Q3)("",!0)])):(0,i.Q3)("",!0)]),l.isVideo?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[o.videoLoading?((0,i.uX)(),(0,i.CE)("div",ct)):o.videoError?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,i.bF)(d,{icon:"exclamation-triangle",class:"error-icon"}),t[20]||(t[20]=(0,i.Lk)("span",{class:"error-text"},"加载失败",-1))])):(0,i.Q3)("",!0),(0,i.bo)((0,i.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>l.handleVideoClick&&l.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>l.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>l.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>l.handleFullscreenChange&&l.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>l.handleFullscreenChange&&l.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>o.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>l.handleVideoError&&l.handleVideoError(...e))},null,40,dt),[[n.aG,!o.videoLoading&&!o.videoError]])],64)):l.isAudio?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,i.bF)(d,{icon:"music",class:"file-icon audio-icon"})])):l.isImage?((0,i.uX)(),(0,i.Wv)(h,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",class:"image-preview"},{placeholder:(0,i.k6)(()=>[...t[21]||(t[21]=[(0,i.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,i.k6)(()=>[(0,i.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,i.bF)(d,{icon:"image",class:"error-icon"}),t[22]||(t[22]=(0,i.Lk)("span",{class:"error-text"},"加载失败",-1))])]),_:1},8,["src","preview-src-list"])):((0,i.uX)(),(0,i.CE)("div",ht,[(0,i.bF)(d,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",ut,[(0,i.Lk)("div",ft,[(0,i.Lk)("span",mt,(0,s.v_)(l.displayName),1)]),(0,i.Lk)("div",pt,[(0,i.Lk)("div",gt,[(0,i.bF)(u,{disabled:a.disableTooltip,content:"详情",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,i.bF)(d,{icon:"info-circle"})])]),_:1},8,["disabled"])]),(0,i.Lk)("div",bt,[(0,i.bF)(u,{disabled:a.disableTooltip,content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"下载",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,i.bF)(d,{icon:"download"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"])])])])]),_:1})}var kt={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 yt=(0,h.A)(kt,[["render",vt],["__scopeId","data-v-ddf49ce2"]]);var _t=yt;const wt={class:"card-bottom-overlay"},Ft={class:"file-name-row"},Ct={class:"file-name"},Tt={key:0,class:"action-bar"},xt={class:"action-bar-right"};function St(e,t,a,r,o,l){const c=at.dI,d=(0,i.g2)("font-awesome-icon"),h=De.R7,u=tt.Ik;return(0,i.uX)(),(0,i.Wv)(u,{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,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>o.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",o.localSelected))},null,8,["modelValue"]),(0,i.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,i.bF)(d,{icon:"folder-open",class:"folder-icon-svg"})]),(0,i.Lk)("div",wt,[(0,i.Lk)("div",Ft,[(0,i.Lk)("span",Ct,(0,s.v_)(l.folderName),1)]),a.showActions?((0,i.uX)(),(0,i.CE)("div",Tt,[t[9]||(t[9]=(0,i.Lk)("div",{class:"action-bar-left"},null,-1)),(0,i.Lk)("div",xt,[(0,i.bF)(h,{disabled:a.disableTooltip,content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"]),(0,i.bF)(h,{disabled:a.disableTooltip,content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,i.bF)(h,{disabled:a.disableTooltip,content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"])])])):(0,i.Q3)("",!0)])]),_:1})}var Lt={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 Et=(0,h.A)(Lt,[["render",St],["__scopeId","data-v-20e5d6b4"]]);var At=Et;function It(e,t,a,n,s,r){return"card"===a.type?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)(a.count,e=>((0,i.uX)(),(0,i.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,i.Lk)("div",{class:"skeleton-image"},null,-1),(0,i.Lk)("div",{class:"skeleton-info"},[(0,i.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)(a.count,e=>((0,i.uX)(),(0,i.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,i.Fv)('
',10)])]))),128)):(0,i.Q3)("",!0)}var Dt={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ut=(0,h.A)(Dt,[["render",It],["__scopeId","data-v-71848b62"]]);var zt=Ut,Bt=a(1095),Ot=(a(7128),a(2086)),Wt=(a(670),a(8830),a(3597),a(9187),a(5407));a(2099);const $t={class:"el-dropdown-link filter-trigger"},Pt={class:"filter-section"},Rt={class:"filter-options"},Nt={class:"filter-section"},jt={class:"filter-options"},Vt={class:"filter-section"},Mt={class:"filter-options"},Xt={class:"filter-section"},Zt={class:"filter-options"},Kt={class:"filter-section"},Gt={class:"filter-options"},Ht={key:0,class:"filter-section"},qt={class:"filter-options"},Qt={key:0,class:"channel-divider"},Yt={class:"channel-group-title"},Jt={class:"filter-actions"};function ea(e,t,a,n,r,o){const l=(0,i.g2)("font-awesome-icon"),c=Wt.z_,d=at.dI,h=at.o5,u=x.S2,f=Ot.Iy,m=Ot.dW;return(0,i.uX)(),(0,i.Wv)(m,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,i.k6)(()=>[(0,i.bF)(f,{class:"filter-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Pt,[t[12]||(t[12]=(0,i.Lk)("div",{class:"filter-title"},"访问状态",-1)),(0,i.Lk)("div",Rt,[(0,i.bF)(h,{modelValue:r.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>r.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>o.handleFilterChange("accessStatus"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.accessStatusOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Nt,[t[13]||(t[13]=(0,i.Lk)("div",{class:"filter-title"},"黑白名单",-1)),(0,i.Lk)("div",jt,[(0,i.bF)(h,{modelValue:r.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>r.localFilters.listType=e),onChange:t[3]||(t[3]=e=>o.handleFilterChange("listType"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.listTypeOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Vt,[t[14]||(t[14]=(0,i.Lk)("div",{class:"filter-title"},"审查结果",-1)),(0,i.Lk)("div",Mt,[(0,i.bF)(h,{modelValue:r.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>r.localFilters.label=e),onChange:t[5]||(t[5]=e=>o.handleFilterChange("label"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.labelOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Xt,[t[15]||(t[15]=(0,i.Lk)("div",{class:"filter-title"},"文件类型",-1)),(0,i.Lk)("div",Zt,[(0,i.bF)(h,{modelValue:r.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>r.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>o.handleFilterChange("fileType"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.fileTypeOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Kt,[t[16]||(t[16]=(0,i.Lk)("div",{class:"filter-title"},"渠道类型",-1)),(0,i.Lk)("div",Gt,[(0,i.bF)(h,{modelValue:r.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>r.localFilters.channel=e),onChange:t[9]||(t[9]=e=>o.handleFilterChange("channel"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.channelOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,i.uX)(),(0,i.CE)("div",Ht,[t[17]||(t[17]=(0,i.Lk)("div",{class:"filter-title"},"渠道名称",-1)),(0,i.Lk)("div",qt,[(0,i.bF)(h,{modelValue:r.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>r.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>o.handleFilterChange("channelName"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.groupedChannelNames,(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,{key:"group-"+e.type},[t>0?((0,i.uX)(),(0,i.CE)("div",Qt)):(0,i.Q3)("",!0),(0,i.Lk)("div",Yt,(0,s.v_)(e.typeLabel),1),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.channels,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Jt,[(0,i.bF)(u,{size:"small",onClick:o.clearFilters,disabled:0===o.activeFilterCount},{default:(0,i.k6)(()=>[...t[18]||(t[18]=[(0,i.eW)("清除筛选",-1)])]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",$t,[(0,i.bF)(c,{value:o.activeFilterCount,hidden:0===o.activeFilterCount,class:"filter-badge"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(8237);var ta={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{accessStatusOptions:[{label:"正常",value:"normal"},{label:"已屏蔽",value:"blocked"}],listTypeOptions:[{label:"白名单",value:"White"},{label:"黑名单",value:"Block"},{label:"未设置",value:"None"}],labelOptions:[{label:"正常",value:"normal"},{label:"12+内容",value:"teen"},{label:"成人内容",value:"adult"}],fileTypeOptions:[{label:"图片",value:"image"},{label:"视频",value:"video"},{label:"音频",value:"audio"},{label:"其他",value:"other"}],channelOptions:[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"外链",value:"External"}],localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{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 aa=(0,h.A)(ta,[["render",ea],["__scopeId","data-v-062d5f10"]]);var ia=aa,na=a(6011);const sa={class:"container"},ra={class:"header-content"},oa={class:"search-area"},la={class:"search-card"},ca={class:"actions"},da={class:"el-dropdown-link"},ha={class:"el-dropdown-link"},ua={class:"el-dropdown-link"},fa={class:"breadcrumb-container"},ma={class:"mobile-directory-path"},pa={class:"breadcrumb desktop-only"},ga=["title"],ba={key:0,class:"content"},va={key:1,class:"empty-state"},ka={class:"empty-text"},ya={class:"empty-hint"},_a={key:1,class:"list-view"},wa={class:"list-header"},Fa={class:"list-col list-col-checkbox"},Ca={key:1,class:"empty-state list-empty"},Ta={class:"empty-text"},xa={class:"empty-hint"},Sa={class:"pagination-container"},La={class:"pagination-center"},Ea={class:"pagination-right"},Aa={class:"page-total"},Ia={class:"page-jump"},Da={class:"dialog-section"},Ua={class:"section-content"},za={class:"dialog-section"},Ba={class:"section-header"},Oa={class:"section-content"},Wa={class:"setting-item"},$a={key:0,class:"setting-item"},Pa={class:"dialog-action"};function Ra(e,t,a,r,o,l){const c=na.A,d=(0,i.g2)("font-awesome-icon"),h=T.WK,u=ia,m=Ot.c6,p=Ot.Iy,g=Ot.dW,b=De.R7,v=Ae.bZ,k=Bt.WZ,w=Bt.vp,F=zt,C=At,S=_t,L=et,E=Ie.aQ,A=x.S2,I=Ae.ZO,D=Ae.lX,U=Ee,z=ge.ll,B=ge.MQ,O=pe.qi,W=_.kZ,$=me,P=q,R=y,N=f;return(0,i.uX)(),(0,i.CE)("div",sa,[(0,i.bF)(D,null,{default:(0,i.k6)(()=>[(0,i.bF)(v,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",ra,[(0,i.bF)(c,{activeTab:"dashboard"}),(0,i.Lk)("div",oa,[(0,i.Lk)("div",la,[(0,i.bF)(h,{modelValue:o.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>o.tempSearch=e),size:"mini",placeholder:"搜索:#标签 -#排除标签",onKeyup:(0,n.jR)(l.handleSearch,["enter"])},{suffix:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"search",class:"search-icon",onClick:l.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","onKeyup"])]),(0,i.bF)(u,{filters:o.filters,"onUpdate:filters":t[1]||(t[1]=e=>o.filters=e),channelNameOptions:o.channelNameOptions,onChange:l.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,i.Lk)("div",ca,[(0,i.bF)(g,{onCommand:l.sort,"hide-on-click":!1},{dropdown:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(m,{command:"dateDesc"},{default:(0,i.k6)(()=>[...t[22]||(t[22]=[(0,i.eW)("按时间倒序",-1)])]),_:1}),(0,i.bF)(m,{command:"nameAsc"},{default:(0,i.k6)(()=>[...t[23]||(t[23]=[(0,i.eW)("按名称升序",-1)])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",da,[(0,i.bF)(d,{icon:l.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"全选此页",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:l.selectPageIcon,class:"header-icon",onClick:l.handleSelectPage},null,8,["icon","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(g,{onCommand:l.handleBatchAction,"hide-on-click":!1,disabled:0===o.selectedFiles.length},{dropdown:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(m,{command:"copy"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"copy",class:"batch-action-item-icon"}),t[24]||(t[24]=(0,i.eW)(" 复制 ",-1))]),_:1}),(0,i.bF)(m,{command:"delete"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"trash-alt",class:"batch-action-item-icon"}),t[25]||(t[25]=(0,i.eW)(" 删除 ",-1))]),_:1}),(0,i.bF)(m,{command:"download"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"download",class:"batch-action-item-icon"}),t[26]||(t[26]=(0,i.eW)(" 下载 ",-1))]),_:1}),(0,i.bF)(m,{command:"move"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"file-export",class:"batch-action-item-icon"}),t[27]||(t[27]=(0,i.eW)(" 移动 ",-1))]),_:1}),(0,i.bF)(m,{command:"tagManagement"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"tags",class:"batch-action-item-icon"}),t[28]||(t[28]=(0,i.eW)(" 标签管理 ",-1))]),_:1}),(0,i.bF)(m,{command:"ban"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"ban",class:"batch-action-item-icon"}),t[29]||(t[29]=(0,i.eW)(" 加入黑名单 ",-1))]),_:1}),(0,i.bF)(m,{command:"white"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"user-plus",class:"batch-action-item-icon"}),t[30]||(t[30]=(0,i.eW)(" 加入白名单 ",-1))]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",ha,[(0,i.bF)(d,{icon:"ellipsis-h",class:(0,s.C4)(["header-icon",{disabled:0===o.selectedFiles.length}])},null,8,["class"])])]),_:1},8,["onCommand","disabled"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"链接格式",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.Lk)("span",ua,[(0,i.bF)(d,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>o.showUrlDialog=!0)})])]),_:1},8,["disabled"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"card"===o.viewMode?"列表视图":"卡片视图",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"card"===o.viewMode?"list":"th-large",class:"header-icon",onClick:l.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled"])])])]),_:1}),(0,i.bF)(I,{class:"main-container"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",fa,[(0,i.Lk)("div",{class:"mobile-directory-trigger",onClick:t[3]||(t[3]=e=>o.showMobileDirectoryDrawer=!0)},[(0,i.bF)(d,{icon:"folder-open",class:"mobile-directory-icon"}),(0,i.Lk)("span",ma,(0,s.v_)(o.currentPath&&o.currentPath.split("/").filter(Boolean).length>0?o.currentPath.split("/").filter(Boolean).pop():"根目录"),1),(0,i.bF)(d,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,i.Lk)("div",pa,[(0,i.bF)(w,{separator:"/"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{onClick:t[4]||(t[4]=e=>l.navigateToFolder(""))},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentPath.split("/").filter(Boolean),(e,t)=>((0,i.uX)(),(0,i.Wv)(k,{key:t,onClick:e=>l.navigateToFolder(o.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,i.Lk)("span",{class:"stats-badge",title:`共 ${e.$data.Number} 个文件`},[(0,i.bF)(d,{icon:"database",class:"stats-badge-icon"}),(0,i.eW)(" "+(0,s.v_)(o.Number),1)],8,ga)]),"card"===o.viewMode?((0,i.uX)(),(0,i.CE)("div",ba,[o.loading?((0,i.uX)(),(0,i.Wv)(F,{key:0,type:"card",count:15})):0===l.paginatedTableData.length?((0,i.uX)(),(0,i.CE)("div",va,[(0,i.bF)(d,{icon:"folder-open",class:"empty-icon"}),(0,i.Lk)("p",ka,(0,s.v_)(l.hasSearchOrFilter?"未找到匹配的文件或文件夹":"当前目录为空"),1),(0,i.Lk)("p",ya,(0,s.v_)(l.hasSearchOrFilter?"尝试调整搜索条件或筛选器":"上传文件后将显示在这里"),1)])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:2},(0,i.pI)(l.paginatedTableData,(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,{key:t},[l.isFolder(e)?((0,i.uX)(),(0,i.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!o.isSearchMode,disableTooltip:l.disableTooltip,onEnter:t=>l.enterFolder(e.name),onCopy:t=>l.handleFolderCopy(e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onTouchstart:a=>l.handleFolderTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,i.uX)(),(0,i.Wv)(S,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:l.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:l.disableTooltip,onDetail:a=>l.openDetailDialog(t,e.name),onCopy:a=>l.handleCopy(t,e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:a=>l.handleTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))])):((0,i.uX)(),(0,i.CE)("div",_a,[(0,i.Lk)("div",wa,[(0,i.Lk)("div",Fa,[(0,i.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:l.isSelectAll,indeterminate:l.isIndeterminate}]),onClick:t[5]||(t[5]=e=>l.handleSelectAllPage(!l.isSelectAll))},[l.isSelectAll?((0,i.uX)(),(0,i.Wv)(d,{key:0,icon:"check",class:"check-icon"})):l.isIndeterminate?((0,i.uX)(),(0,i.Wv)(d,{key:1,icon:"minus",class:"check-icon"})):(0,i.Q3)("",!0)],2)]),t[31]||(t[31]=(0,i.Lk)("div",{class:"list-col list-col-preview"},"预览",-1)),t[32]||(t[32]=(0,i.Lk)("div",{class:"list-col list-col-name"},"文件名",-1)),t[33]||(t[33]=(0,i.Lk)("div",{class:"list-col list-col-tags"},"标签",-1)),t[34]||(t[34]=(0,i.Lk)("div",{class:"list-col list-col-channel"},"渠道类型",-1)),t[35]||(t[35]=(0,i.Lk)("div",{class:"list-col list-col-channel-name"},"渠道名称",-1)),t[36]||(t[36]=(0,i.Lk)("div",{class:"list-col list-col-address"},"上传地址",-1)),t[37]||(t[37]=(0,i.Lk)("div",{class:"list-col list-col-size"},"大小",-1)),t[38]||(t[38]=(0,i.Lk)("div",{class:"list-col list-col-date"},"上传时间",-1)),t[39]||(t[39]=(0,i.Lk)("div",{class:"list-col list-col-actions"},"操作",-1))]),o.loading?((0,i.uX)(),(0,i.Wv)(F,{key:0,type:"list",count:15})):0===l.paginatedTableData.length?((0,i.uX)(),(0,i.CE)("div",Ca,[(0,i.bF)(d,{icon:"folder-open",class:"empty-icon"}),(0,i.Lk)("p",Ta,(0,s.v_)(l.hasSearchOrFilter?"未找到匹配的文件或文件夹":"当前目录为空"),1),(0,i.Lk)("p",xa,(0,s.v_)(l.hasSearchOrFilter?"尝试调整搜索条件或筛选器":"上传文件后将显示在这里"),1)])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:2},(0,i.pI)(l.paginatedTableData,(e,t)=>((0,i.uX)(),(0,i.Wv)(L,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:l.getFileLink(e.name),onEnter:t=>l.enterFolder(e.name),onDetail:a=>l.openDetailDialog(t,e.name),onCopy:a=>l.handleCopy(t,e.name),onFolderCopy:t=>l.handleFolderCopy(e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:a=>l.isFolder(e)?l.handleFolderTouchStart(e,t):l.handleTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))])),(0,i.Lk)("div",Sa,[(0,i.Lk)("div",La,[(0,i.bF)(E,{background:"",layout:"prev, pager, next",total:l.filteredTableData.length,"page-size":o.pageSize,"current-page":o.currentPage,"pager-count":l.pagerCount,onCurrentChange:l.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,i.bF)(A,{type:"primary",onClick:l.refreshFileList,class:"refresh-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"sync",class:(0,s.C4)({"fa-spin":o.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),o.currentPage===Math.ceil(l.filteredTableData.length/o.pageSize)?((0,i.uX)(),(0,i.Wv)(A,{key:0,type:"primary",onClick:l.loadMoreData,loading:o.loading,class:"load-more"},{default:(0,i.k6)(()=>[...t[40]||(t[40]=[(0,i.eW)(" 加载更多 ",-1)])]),_:1},8,["onClick","loading"])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",Ea,[(0,i.Lk)("span",Aa,"共 "+(0,s.v_)(l.realTotalPages)+" 页",1),(0,i.Lk)("div",Ia,[t[42]||(t[42]=(0,i.Lk)("span",null,"跳至",-1)),(0,i.bF)(h,{modelValue:o.jumpPage,"onUpdate:modelValue":t[6]||(t[6]=e=>o.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,n.jR)(l.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,i.bF)(A,{size:"small",type:"primary",onClick:l.handleJumpPage,class:"jump-btn"},{default:(0,i.k6)(()=>[...t[41]||(t[41]=[(0,i.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1})]),_:1}),(0,i.bF)(U,{modelValue:o.showdetailDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>o.showdetailDialog=e),file:o.detailFile,fileLink:l.getFileLink(o.detailFile?.name),urls:l.allUrl,onDownload:t[8]||(t[8]=e=>l.handleDownload(o.detailFile?.name)),onTagManagement:t[9]||(t[9]=e=>l.handleTagManagement(o.detailFile?.name)),onBlock:t[10]||(t[10]=e=>l.handleBlock(o.detailFile?.name)),onWhite:t[11]||(t[11]=e=>l.handleWhite(o.detailFile?.name)),onDelete:t[12]||(t[12]=e=>l.handleDetailDelete(o.detailFile?.name))},null,8,["modelValue","file","fileLink","urls"]),(0,i.bF)(W,{title:"链接格式",modelValue:o.showUrlDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>o.showUrlDialog=e),width:l.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Da,[t[49]||(t[49]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,i.Lk)("div",Ua,[(0,i.bF)(B,{modelValue:o.defaultUrlFormat,"onUpdate:modelValue":t[13]||(t[13]=e=>o.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(z,{label:"originUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"link",class:"radio-icon"}),t[43]||(t[43]=(0,i.Lk)("span",null,"原始链接",-1))]),_:1}),(0,i.bF)(z,{label:"mdUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"code",class:"radio-icon"}),t[44]||(t[44]=(0,i.Lk)("span",null,"Markdown",-1))]),_:1}),(0,i.bF)(z,{label:"htmlUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"code-branch",class:"radio-icon"}),t[45]||(t[45]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(z,{label:"bbUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"quote-right",class:"radio-icon"}),t[46]||(t[46]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1}),(0,i.bF)(z,{label:"tgId",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"paper-plane",class:"radio-icon"}),t[47]||(t[47]=(0,i.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,i.bF)(z,{label:"s3Location",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cloud",class:"radio-icon"}),t[48]||(t[48]=(0,i.Lk)("span",null,"S3链接",-1))]),_:1})]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",za,[(0,i.Lk)("div",Ba,[t[50]||(t[50]=(0,i.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,i.bF)(b,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Oa,[(0,i.Lk)("div",Wa,[t[51]||(t[51]=(0,i.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,i.bF)(O,{modelValue:o.useCustomUrl,"onUpdate:modelValue":t[14]||(t[14]=e=>o.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===o.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",$a,[t[52]||(t[52]=(0,i.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,i.bF)(h,{modelValue:o.customUrlPrefix,"onUpdate:modelValue":t[15]||(t[15]=e=>o.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",Pa,[(0,i.bF)(A,{type:"primary",onClick:t[16]||(t[16]=e=>o.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[53]||(t[53]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,i.bF)($,{modelValue:o.showTagDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>o.showTagDialog=e),fileId:o.currentTagFile,onTagsUpdated:l.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,i.bF)(P,{modelValue:o.showBatchTagDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>o.showBatchTagDialog=e),selectedFiles:o.selectedFiles,onTagsUpdated:l.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,i.bF)(R,{modelValue:o.showMobileActionModal,"onUpdate:modelValue":t[20]||(t[20]=e=>o.showMobileActionModal=e),title:o.mobileActionIsFolder?l.getFolderName(o.mobileActionFile?.name||""):o.mobileActionFile?.metadata?.FileName||l.getFileName(o.mobileActionFile?.name||""),isFolder:o.mobileActionIsFolder,onAction:l.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,i.bF)(N,{modelValue:o.showMobileDirectoryDrawer,"onUpdate:modelValue":t[21]||(t[21]=e=>o.showMobileDirectoryDrawer=e),currentPath:o.currentPath,onNavigate:l.navigateToFolder,onGoBack:l.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"])])}a(1148),a(116),a(3579),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698),a(4603),a(7566),a(8721);var Na=a(8401),ja=a(4813),Va=a.n(ja);a(8335);class Ma{constructor(){this.FILE_LIST_PATH="data/fileList.json"}getLocalFileList(){try{const e=localStorage.getItem(this.FILE_LIST_PATH);return e?JSON.parse(e):{files:[],directories:[]}}catch(e){return console.error("Error reading local file list:",e),{files:[],directories:[]}}}saveFileList(e){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(e)),!0}catch(t){return console.error("Error saving file list:",t),!1}}addFile(e){try{const t=this.getLocalFileList();return t.files.push(e),this.saveFileList(t)}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getLocalFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.saveFileList(t))}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getLocalFileList();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.saveFileList(n)}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>t.name!==e),this.saveFileList(t)}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.saveFileList(t)}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getLocalFileList(),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,K.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||X.nk.warning("索引构建中,当前搜索和排序结果可能不准确,请稍后再试。"),this.saveFileList(o)}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.getLocalFileList(),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 c=await(0,K.A)(l,{method:"GET"}),d=await c.json();return r.files.push(...d.files),this.saveFileList(r)}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const Xa=new Ma;var Za=a(2388),Ka={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:[]}},components:{DashboardTabs:na.A,TagManagementDialog:me,BatchTagDialog:q,SkeletonLoader:zt,FileCard:_t,FolderCard:At,FileListItem:et,FileDetailDialog:Ee,MobileActionSheet:y,MobileDirectoryDrawer:f,FilterDropdown:ia},computed:{...(0,Na.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":"External"===e.metadata?.Channel?e.channelTag="外链":e.channelTag="未知"}),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?"正常":"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?"受限":"正常"},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||"未知",S3Location:this.detailFile?.metadata?.S3Location||"未知",S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||"未知"}:{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||"未知",S3Location:this.detailFile?.metadata?.S3Location||"未知",S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||"未知"}},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,K.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"};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:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})},handleDetailDelete(e){this.$confirm("此操作将永久删除该文件, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{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.showdetailDialog=!1}).catch(()=>this.$message.error("删除失败"))}).catch(()=>console.log("已取消删除"))},handleBlock(e){this.$confirm("此操作将把该文件加入黑名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success("加入黑名单成功")}).catch(()=>this.$message.error("加入黑名单失败"))}).catch(()=>console.log("已取消加入黑名单"))},handleWhite(e){this.$confirm("此操作将把该文件加入白名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success("加入白名单成功")}).catch(()=>this.$message.error("加入白名单失败"))}).catch(()=>console.log("已取消加入白名单"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(`此操作将永久删除${a?"文件夹":"该文件"}, 是否继续?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),Xa.removeFile(t),this.$message.success("删除成功")}).catch(()=>this.$message.error("删除失败"))}).catch(()=>console.log("已取消删除"))},handleBatchDelete(){this.$confirm("此操作将永久删除选中的文件及文件夹, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,K.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),Xa.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success("批量删除成功")}).catch(()=>this.$message.error("批量删除失败"))}).catch(()=>console.log("已取消批量删除"))},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:"正在获取文件列表..."}));try{let n=[...e];for(const e of t)try{const t=await(0,K.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("没有可复制的链接");const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning("没有可复制的链接");const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(`批量复制 ${s.length} 个链接成功`)):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("批量复制链接失败:",i),this.$message.error("批量复制链接失败,请重试")}},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("批量复制链接成功")},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.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await Xa.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error("加载更多文件失败,请检查网络连接")}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(){this.$store.commit("setCredentials",null),this.$router.push("/adminLogin")},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},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.$prompt("请输入新的目录","移动文件",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:"/",beforeClose:(e,t,a)=>{if("confirm"===e){const e=t.inputValue,i=(0,Za.G)(e);if(!i.valid)return void this.$message.error(i.error);a()}else a()}}).then(({value:e})=>{const a=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/"),i=this.tableData.find(e=>e.name===t).isFolder;a!==this.currentPath?(0,K.A)(`/api/manage/move/${t}?folder=${i}&dist=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);if(-1!==e){const n=a+t.split("/").pop();Xa.moveFile(t,n,i,this.currentPath),this.tableData.splice(e,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success("移动成功")}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error("移动失败")):this.$message.warning("目标文件夹不能是当前文件夹")}).catch(()=>console.log("已取消移动文件"))},handleBatchMove(){this.$prompt("请输入新的目录","移动文件",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:"/",beforeClose:(e,t,a)=>{if("confirm"===e){const e=t.inputValue,i=(0,Za.G)(e);if(!i.valid)return void this.$message.error(i.error);a()}else a()}}).then(({value:e})=>{const t=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/");if(t===this.currentPath)return void this.$message.warning("目标文件夹不能是当前文件夹");const a=this.selectedFiles.map(e=>{const a=e.isFolder;return(0,K.A)(`/api/manage/move/${e.name}?folder=${a}&dist=${t}`,{method:"GET"})});Promise.all(a).then(e=>{let a=0;e.forEach((e,i)=>{if(e.ok){a++;const e=this.selectedFiles[i];e.selected=!1;const n=this.tableData.findIndex(t=>t.name===e.name);if(-1!==n){const a=t+e.name.split("/").pop();Xa.moveFile(e.name,a,e.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("移动成功")}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error("移动失败"))}).catch(()=>console.log("已取消移动文件"))},handleBatchBlock(){this.$confirm("此操作将把选中的文件加入黑名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,K.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("批量加入黑名单成功")}).catch(()=>this.$message.error("批量加入黑名单失败"))}).catch(()=>console.log("已取消批量加入黑名单"))},handleBatchWhite(){this.$confirm("此操作将把选中的文件加入白名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,K.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("批量加入白名单成功")}).catch(()=>this.$message.error("批量加入白名单失败"))}).catch(()=>console.log("已取消批量加入白名单"))},handleBatchDownload(){const e=new(Va()),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("请输入有效的页码"):e>this.realTotalPages?this.$message.warning(`页码不能超过 ${this.realTotalPages}`):(e>this.totalPages?(this.$message.info("正在加载数据,请稍候..."),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 Xa.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("加载数据失败,请检查网络连接")}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=Xa.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("获取文件列表失败")}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await Xa.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){console.error("Error refreshing file list:",e),this.$message.error("刷新失败,请重试")}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("刷新失败,请重试")}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("请先选择文件")},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()},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:"正在获取文件列表..."});try{const a=await(0,K.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("文件夹为空,没有可复制的链接");const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning("没有可复制的链接");const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(`已复制 ${n.length} 个文件链接`)):(this.copyToClipboardFallback(s),this.$message.success(`已复制 ${n.length} 个文件链接`))}catch(a){t.close(),console.error("复制文件夹链接失败:",a),this.$message.error("复制文件夹链接失败,请重试")}}},mounted(){this.loading=!0,(0,K.A)("/api/manage/check",{method:"GET"}).then(e=>e.text()).then(e=>{if("true"==e)return this.showLogoutButton=!0,!0;if("Not using basic auth."==e)return!0;throw new Error("Unauthorized")}).then(()=>this.refreshFileList()).then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error("同步数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl}};const Ga=(0,h.A)(Ka,[["render",Ra],["__scopeId","data-v-8820054c"]]);var Ha=Ga},2907:function(e,t,a){"use strict";a(5331),a(6808),a(6711)},3565:function(e,t,a){"use strict";a(5331)},4396:function(e,t,a){"use strict";a(5331),a(4885)},4813:function(e,t,a){a(4114),a(6573),a(8100),a(7936),a(8111),a(2489),a(7588),a(9577),a(1549),a(9797),a(9631),a(5623),a(9848),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 c=new Error("Cannot find module '"+r+"'");throw c.code="MODULE_NOT_FOUND",c}var d=a[r]={exports:{}};t[r][0].call(d.exports,function(e){var a=t[r][1][e];return n(a||e)},d,d.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,c=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(c++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(c++))),u[d++]=t,64!==o&&(u[d++]=a),64!==l&&(u[d++]=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,d){var h,u,f=e.file,m=e.compression,p=d!==o.utf8encode,g=s.transformTo("string",d(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",d(v)),y=s.transformTo("string",o.utf8encode(v)),_=b.length!==f.name.length,w=y.length!==v.length,F="",C="",T="",x=f.dir,S=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var E=0;t&&(E|=8),p||!_&&!w||(E|=2048);var A=0,I=0;x&&(A|=16),"UNIX"===r?(I=798,A|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,x)):(I=20,A|=function(e){return 63&(e||0)}(f.dosPermissions)),h=S.getUTCHours(),h<<=6,h|=S.getUTCMinutes(),h<<=5,h|=S.getUTCSeconds()/2,u=S.getUTCFullYear()-1980,u<<=4,u|=S.getUTCMonth()+1,u<<=5,u|=S.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 D="";return D+="\n\0",D+=i(E,2),D+=m.magic,D+=i(h,2),D+=i(u,2),D+=i(L.crc32,4),D+=i(L.compressedSize,4),D+=i(L.uncompressedSize,4),D+=i(g.length,2),D+=i(F.length,2),{fileRecord:c.LOCAL_FILE_HEADER+D+g+F,dirRecord:c.CENTRAL_FILE_HEADER+i(I,2)+D+i(k.length,2)+"\0\0\0\0"+i(A,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),c=e("../signature");function d(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(d,r),d.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}}))},d.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},d.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 c.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},d.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"),c=null;if(o.nodestream)try{c=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function d(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,c=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(c,r),c.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})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=c,i.inherits(d,r),d.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=d},{"./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,c[i++]=56320|1023&n)}return l(c,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"),c=0,d=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,x=42,S=113,L=1,E=2,A=3,I=4;function D(e,t){return e.msg=l[t],t}function U(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 O(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,B(e.strm)}function W(e,t){e.pending_buf[e.pending++]=t}function $(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function P(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,c=e.window,d=e.w_mask,h=e.prev,u=e.strstart+C,f=c[s+r-1],m=c[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(c[(a=t)+r]===m&&c[a+r-1]===f&&c[a]===c[s]&&c[++a]===c[s+1]){s+=2,a++;do{}while(c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function R(e){var t,a,i,s,l,c,d,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(c=e.strm,d=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=c.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(R(e),0===e.lookahead&&t===c)return L;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,O(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):(e.strstart>e.block_start&&(O(e,!1),e.strm.avail_out),L)}),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,j),new V(8,16,32,32,j),new V(8,16,128,128,j),new V(8,32,128,256,j),new V(32,128,258,1024,j),new V(32,258,258,4096,j)],a.deflateInit=function(e,t){return K(e,t,g,15,8,0)},a.deflateInit2=K,a.deflateReset=Z,a.deflateResetKeep=X,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=S);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=S,$(n,f),0!==n.strstart&&($(n,e.adler>>>16),$(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending!==n.pending_buf_size));)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)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&B(e),n.pending+2<=n.pending_buf_size&&(W(n,255&e.adler),W(n,e.adler>>8&255),e.adler=0,n.status=S)):n.status=S),0!==n.pending){if(B(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&U(t)<=U(a)&&t!==d)return D(e,-5);if(666===n.status&&0!==e.avail_in)return D(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==c&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(R(e),0===e.lookahead)){if(t===c)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(O(e,!1),0===e.strm.avail_out)?L:E}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(R(e),e.lookahead<=C&&t===c)return L;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&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(O(e,!1),0===e.strm.avail_out)?L:E}(n,t):i[n.level].func(n,t);if(m!==A&&m!==I||(n.status=666),m===L||m===A)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===E&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),B(e),0===e.avail_out))return n.last_flush=-1,h}return t!==d?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)):($(n,e.adler>>>16),$(n,65535&e.adler)),B(e),0=a.w_size&&(0===o&&(z(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,c=e.next_in,d=e.input,e.avail_in=m,e.next_in=0,e.input=t,R(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))x[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,d):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,R,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,B=8+(15&(y>>>=4)),0===a.wbits)a.wbits=B;else if(B>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,R[2]=y>>>16&255,R[3]=y>>>24&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,2,0)),_=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(x=a.length)&&(x=v),x&&(a.head&&(B=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,x,B)),512&a.flags&&(a.check=s(a.check,f,x,g)),v-=x,g+=x,a.length-=x),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(x=0;B=f[g+x++],a.head&&B&&a.length<65536&&(a.head.name+=String.fromCharCode(B)),B&&x>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(x=a.length){if(v>>=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},O=o(0,a.lens,0,19,a.lencode,0,a.work,W),a.lenbits=W.bits,O){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(I<16)y>>>=E,_-=E,a.lens[a.have++]=I;else{if(16===I){for($=E+2;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(y>>>=E,_-=E,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}B=a.lens[a.have-1],x=3+(3&y),y>>>=2,_-=2}else if(17===I){for($=E+3;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}_-=E,B=0,x=3+(7&(y>>>=E)),y>>>=3,_-=3}else{for($=E+7;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}_-=E,B=0,x=11+(127&(y>>>=E)),y>>>=7,_-=7}if(a.have+x>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;x--;)a.lens[a.have++]=B}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,W={bits:a.lenbits},O=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,W),a.lenbits=W.bits,O){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,W={bits:a.distbits},O=o(c,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,W),a.distbits=W.bits,O){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;A=(P=a.lencode[y&(1<>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(A&&0==(240&A)){for(D=E,U=A,z=I;A=(P=a.lencode[z+((y&(1<>D)])>>>16&255,I=65535&P,!(D+(E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=D,_-=D,a.back+=D}if(y>>>=E,_-=E,a.back+=E,a.length=I,0===A){a.mode=26;break}if(32&A){a.back=-1,a.mode=12;break}if(64&A){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&A,a.mode=22;case 22:if(a.extra){for($=a.extra;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.length+=y&(1<>>=a.extra,_-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;A=(P=a.distcode[y&(1<>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(0==(240&A)){for(D=E,U=A,z=I;A=(P=a.distcode[z+((y&(1<>D)])>>>16&255,I=65535&P,!(D+(E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=D,_-=D,a.back+=D}if(y>>>=E,_-=E,a.back+=E,64&A){e.msg="invalid distance code",a.mode=30;break}a.offset=I,a.extra=15&A,a.mode=24;case 24:if(a.extra){for($=a.extra;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.offset+=y&(1<>>=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(x=F-k,a.offset>x){if((x=a.offset-x)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}S=x>a.wnext?(x-=a.wnext,a.wsize-x):a.wnext-x,x>a.length&&(x=a.length),L=a.window}else L=m,S=b-a.offset,x=a.length;for(kv?(y=W[$+h[C]],U[z+h[C]]):(y=96,0),f=1<>E)+(m-=f)]=k<<24|y<<16|_,0!==m;);for(f=1<>=1;if(0!==f?(D&=f-1,D+=f):D=0,C++,0==--B[F]){if(F===x)break;F=t[a+h[C]]}if(S>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function $(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]=R(s[o]++,o))}}function j(e){var t;for(t=0;t>1;1<=a;a--)X(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],X(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++,X(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,c=t.max_code,d=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?($(e,2+(i?1:0),3),Z(e,T,x)):($(e,4+(i?1:0),3),function(e,t,a,i){var n;for($(e,t-257,5),$(e,a-1,5),$(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*(L[a]+c+1)]++,e.dyn_dtree[2*O(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){$(e,2,3),P(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,c=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d: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)}):c&&"onreadystatechange"in c.createElement("script")?(i=c.documentElement,function(e){var t=c.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iB2l(u3L_QK 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

d)6 zP6x60ub{Oh^PrX0CN)oB;(`$cmRp%9kQ?ZP%EcMWgS6MnfZ3NXBoD%cy|T$xOyqNf zgIkbHRs1NOahq_z0_@y85Z<7}=;Mm9xlMS0lBEFrFbFsUxFp3wS7t=#nR&i~Cju28 zQ%h8@{!dYLAtgq(exQ&yAkqmQR;kaLPB}Pti=dPdYAV#$x^@{Fin4?LWvdLExr>i?J0t?Pn(P`2bJacTJt-nZAAfj`NEz=Plf z7~ue5?2nwi89n@laKi{FjPW|*zkkc_eVWe7rwxe?9GWEB{$xVd`URH*TFWNbRA-Or z)0Z#ALIi`#G=}eqQKAhJiMo)2o0KtZ-tWOKkvxWFec%Pb@5^N6$BfZ8O9`v$1WUeI zO4mblIFTU>@2cVO0XSqWhd&L6Uzb_SA%i20eiCes$_2r+ThyKE!eHiF43tG8wrG-+ z%f?bsg@rdB`Sb?n4;T?<+_t)dTnKy>MYYvmf7@cFZzkx zaPStDR99<*)%k1+OgR1oYcA#!>VJz3^)GV6f9J5wjrf-G*P8elFY#}H^qnTP%{rj` z2R`6?zNR&y{FASLqm=V~5+QGLir(hTTe1K;q^3Q#uYV>|7M$oIHmXWSUYjUO$ znRnW1%;PCIqW*cJ0d4e4iai%13IAsGV8n|S$8PwhEzg_xttD-_5cyx{hT-tMPf~dX zY`%E^+;S#qk3qHQ_8VLpzS;`nXSO3K-G%Q_J6%26;P?|wn9Hh8v)Ms zjIa;@y3_ekyFhc4KjFq!A$q_Y6_%rmJmMwoj<9q-3&c}>UCm$S^V2pnn& zL$+IGs(F1mYa3iyI>?GMm*bj>sPOPQz7OPZZQ#pWQB*I1|buvF$T8Kv(_*MV( zmEuT+_}NU@L6d$FZ}a>390TRl9?1Atw}Tl#l@lbUkBYx5(;@(F*M;cY1DUJK)gVDtbpX}>f)=6`1*W9Tlw0oOcl4Lnp zbx%}lB2SiHH)Uj}@MJk`lFh+d3967jz%B@QnP3kv$zaWL0BPXJTG!Uz*d27us$b^& zB8=6+4LI45WNSy5=C814spYKt-N(pC@9s!Rd%Znjnp&nw7?ZL=v8Zd}?6WAoOR_j> z`IT{cx46%fNJW=ez&taL=Rl@4RRb{4xK+5(McH33WPd$BmxhetpR=jTr?61}%?~xj zDGmPNOK-5E#2df>&d0OaWd7C3U6RRY | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: '目标目录包含非法字符,请使用合法的路径格式' \r\n };\r\n }\r\n \r\n // 检查路径是否包含连续的斜杠\r\n if (path.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 { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, 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-content\"\n};\nconst _hoisted_3 = [\"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, [_cache[4] || (_cache[4] = _createElementVNode(\"span\", {\n class: \"mobile-drawer-title\"\n }, \"目录导航\", -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_2, [_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 }), _cache[5] || (_cache[5] = _createElementVNode(\"span\", null, \"根目录\", -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_3);\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 }), _cache[6] || (_cache[6] = _createElementVNode(\"span\", null, \"返回上一级\", -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=2d8e83ec&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=2d8e83ec&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-2d8e83ec\"]])\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 }), _cache[11] || (_cache[11] = _createElementVNode(\"span\", null, \"查看详情\", -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 }), _cache[12] || (_cache[12] = _createElementVNode(\"span\", null, \"复制链接\", -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 }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"下载文件\", -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 }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"移动文件\", -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 }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"标签管理\", -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 }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"复制链接\", -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 }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"移动文件夹\", -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 ? '删除文件夹' : '删除文件'), 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=7579ad69&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=7579ad69&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-7579ad69\"]])\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 key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_13 = {\n class: \"tags-container\"\n};\nconst _hoisted_14 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_15 = {\n class: \"tab-content\"\n};\nconst _hoisted_16 = {\n class: \"tab-description\"\n};\nconst _hoisted_17 = {\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: \"批量标签管理\",\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: \"添加\",\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, \"为选中的 \" + _toDisplayString($options.fileCount) + \" 个文件添加标签\", 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: \"输入标签名称\",\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\", \"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, [_cache[3] || (_cache[3] = _createElementVNode(\"h4\", null, \"待添加的标签\", -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, \" 暂无待添加标签 \"))]), _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(() => [...(_cache[4] || (_cache[4] = [_createTextVNode(\" 添加到所有文件 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"移除\",\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_cache[6] || (_cache[6] = _createElementVNode(\"p\", {\n class: \"tab-description\"\n }, \"移除选中文件的共有标签\", -1)), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_cache[5] || (_cache[5] = _createElementVNode(\"h4\", null, \"共有标签\", -1)), _createElementVNode(\"div\", _hoisted_13, [(_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_14, \" 选中的文件没有共有标签 \"))])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"清空\",\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"p\", _hoisted_16, \"清空选中的 \" + _toDisplayString($options.fileCount) + \" 个文件的所有标签\", 1), _createVNode(_component_el_alert, {\n title: \"⚠️警告\",\n type: \"warning\",\n description: \"此操作将清空所有选中文件的标签,且不可恢复\",\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [...(_cache[7] || (_cache[7] = [_createTextVNode(\" 确认清空所有标签 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"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('加载共有标签失败');\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('标签已在列表中');\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('请先添加要批量添加的标签');\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(`成功为 ${data.updated} 个文件添加标签`);\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error('批量添加标签失败');\n }\n } else {\n throw new Error('批量添加标签失败');\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error('批量添加标签失败');\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(`成功从 ${data.updated} 个文件中移除标签`);\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error('移除标签失败');\n }\n } else {\n throw new Error('移除标签失败');\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error('移除标签失败');\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(`确定要清空选中的 ${this.fileCount} 个文件的所有标签吗?此操作不可恢复。`, '确认清空', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info('已取消清空操作');\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(`成功清空 ${data.updated} 个文件的标签`);\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error('清空标签失败');\n }\n } else {\n throw new Error('清空标签失败');\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error('清空标签失败');\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=dacf7742&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=dacf7742&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-dacf7742\"]])\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: \"标签管理\",\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(() => [...(_cache[5] || (_cache[5] = [_createTextVNode(\"关闭\", -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: \"输入标签名称\",\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\", \"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, [_cache[2] || (_cache[2] = _createElementVNode(\"h4\", null, \"当前标签\", -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, \" 暂无标签 \"))]), _createElementVNode(\"div\", _hoisted_8, [_cache[4] || (_cache[4] = _createElementVNode(\"h4\", null, \"常用标签\", -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 }), _cache[3] || (_cache[3] = _createTextVNode(\" 加载中... \", -1))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 暂无常用标签 \"))])])]),\n _: 1\n }, 8, [\"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('加载标签失败');\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('标签已存在');\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('标签添加成功');\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 || '添加标签失败');\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || '添加标签失败');\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('标签删除成功');\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error('删除标签失败');\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error('删除标签失败');\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=8b4291b4&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=8b4291b4&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-8b4291b4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment } 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: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_7 = {\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_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: \"文件详情\",\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_button, {\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 }), _cache[15] || (_cache[15] = _createTextVNode(\" 下载 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[16] || (_cache[16] = _createTextVNode(\" 标签 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[17] || (_cache[17] = _createTextVNode(\" 黑名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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: \"user-plus\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _cache[18] || (_cache[18] = _createTextVNode(\" 白名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[19] || (_cache[19] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n })]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $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: \"原始链接\",\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _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[6] || (_cache[6] = $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[7] || (_cache[7] = $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[8] || (_cache[8] = $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[9] || (_cache[9] = $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[10] || (_cache[10] = $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[11] || (_cache[11] = $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[13] || (_cache[13] = (...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: \"文件名\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件类型\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileType || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件大小\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileSize ? $props.file.metadata.FileSize + ' MB' : '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"渠道类型/名称\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || '未知') + \" / \" + _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"访问状态/审查\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType) + \" / \" + _toDisplayString($props.file?.metadata?.Label || '无'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传IP\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传地址\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件标签\"\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_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_7, \"暂无标签\"))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"column\"])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]);\n}","import { ElMessage } from 'element-plus';\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'],\n data() {\n return {\n activeTab: 'originUrl'\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 '未知';\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return '正常(白名单)';\n if (listType === 'Block') return '已屏蔽(黑名单)';\n if (label === 'adult') return '已屏蔽(审查不通过)';\n return '正常';\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('链接已复制');\n });\n },\n openImageLink() {\n if (this.fileLink) {\n // 移除 ?from=admin 参数\n const cleanUrl = this.fileLink.replace(/\\?from=admin$/, '');\n window.open(cleanUrl, '_blank');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=0dc381fc&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=0dc381fc&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-0dc381fc\"]])\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 ? '-' : $props.item.metadata?.FileSize ? $props.item.metadata.FileSize + ' MB' : '-'), 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: \"复制链接\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"下载\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"移动\",\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 })], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: \"复制链接\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"移动\",\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 })], 64)), _createVNode(_component_el_tooltip, {\n content: \"删除\",\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 })])], 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 return 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 },\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=9968e9fe&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=9968e9fe&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-9968e9fe\"]])\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 = [\"src\"];\nconst _hoisted_9 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_10 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_11 = {\n class: \"file-name-row\"\n};\nconst _hoisted_12 = {\n class: \"file-name\"\n};\nconst _hoisted_13 = {\n class: \"action-bar\"\n};\nconst _hoisted_14 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_15 = {\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 }), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"error-text\"\n }, \"加载失败\", -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_8), [[_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 class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[21] || (_cache[21] = [_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 }), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"error-text\"\n }, \"加载失败\", -1))])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"详情\",\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\"])]), _createElementVNode(\"div\", _hoisted_15, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"移动\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"删除\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"下载\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"复制链接\",\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\"])])])])]),\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=ddf49ce2&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=ddf49ce2&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-ddf49ce2\"]])\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: \"复制链接\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"移动\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"删除\",\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\"])])])) : _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=20e5d6b4&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=20e5d6b4&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-20e5d6b4\"]])\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=71848b62&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=71848b62&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-71848b62\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, 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-options\"\n};\nconst _hoisted_4 = {\n class: \"filter-section\"\n};\nconst _hoisted_5 = {\n class: \"filter-options\"\n};\nconst _hoisted_6 = {\n class: \"filter-section\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-options\"\n};\nconst _hoisted_10 = {\n class: \"filter-section\"\n};\nconst _hoisted_11 = {\n class: \"filter-options\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_15 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_16 = {\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, [_cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"访问状态\", -1)), _createElementVNode(\"div\", _hoisted_3, [_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($data.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_4, [_cache[13] || (_cache[13] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"黑白名单\", -1)), _createElementVNode(\"div\", _hoisted_5, [_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($data.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_6, [_cache[14] || (_cache[14] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"审查结果\", -1)), _createElementVNode(\"div\", _hoisted_7, [_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($data.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_8, [_cache[15] || (_cache[15] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"文件类型\", -1)), _createElementVNode(\"div\", _hoisted_9, [_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($data.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_10, [_cache[16] || (_cache[16] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"渠道类型\", -1)), _createElementVNode(\"div\", _hoisted_11, [_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($data.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_12, [_cache[17] || (_cache[17] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"渠道名称\", -1)), _createElementVNode(\"div\", _hoisted_13, [_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_14)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_15, _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_16, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [...(_cache[18] || (_cache[18] = [_createTextVNode(\"清除筛选\", -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 // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions: [{\n label: '正常',\n value: 'normal'\n }, {\n label: '已屏蔽',\n value: 'blocked'\n }],\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions: [{\n label: '白名单',\n value: 'White'\n }, {\n label: '黑名单',\n value: 'Block'\n }, {\n label: '未设置',\n value: 'None'\n }],\n // 审查结果选项\n // 参考 FileDetailDialog: adult=已屏蔽(审查不通过), 其他=正常\n labelOptions: [{\n label: '正常',\n value: 'normal'\n }, {\n label: '12+内容',\n value: 'teen'\n }, {\n label: '成人内容',\n value: 'adult'\n }],\n fileTypeOptions: [{\n label: '图片',\n value: 'image'\n }, {\n label: '视频',\n value: 'video'\n }, {\n label: '音频',\n value: 'audio'\n }, {\n label: '其他',\n value: 'other'\n }],\n channelOptions: [{\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: '外链',\n value: 'External'\n }],\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\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=062d5f10&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=062d5f10&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-062d5f10\"]])\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, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } 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: \"el-dropdown-link\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_10 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_11 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_12 = [\"title\"];\nconst _hoisted_13 = {\n key: 0,\n class: \"content\"\n};\nconst _hoisted_14 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_15 = {\n class: \"empty-text\"\n};\nconst _hoisted_16 = {\n class: \"empty-hint\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_21 = {\n class: \"empty-text\"\n};\nconst _hoisted_22 = {\n class: \"empty-hint\"\n};\nconst _hoisted_23 = {\n class: \"pagination-container\"\n};\nconst _hoisted_24 = {\n class: \"pagination-center\"\n};\nconst _hoisted_25 = {\n class: \"pagination-right\"\n};\nconst _hoisted_26 = {\n class: \"page-total\"\n};\nconst _hoisted_27 = {\n class: \"page-jump\"\n};\nconst _hoisted_28 = {\n class: \"dialog-section\"\n};\nconst _hoisted_29 = {\n class: \"section-content\"\n};\nconst _hoisted_30 = {\n class: \"dialog-section\"\n};\nconst _hoisted_31 = {\n class: \"section-header\"\n};\nconst _hoisted_32 = {\n class: \"section-content\"\n};\nconst _hoisted_33 = {\n class: \"setting-item\"\n};\nconst _hoisted_34 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_35 = {\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_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 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: \"mini\",\n placeholder: \"搜索:#标签 -#排除标签\",\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\", \"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(() => [...(_cache[22] || (_cache[22] = [_createTextVNode(\"按时间倒序\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [...(_cache[23] || (_cache[23] = [_createTextVNode(\"按名称升序\", -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: \"全选此页\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.selectPageIcon,\n class: \"header-icon\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleBatchAction,\n \"hide-on-click\": false,\n disabled: $data.selectedFiles.length === 0\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"copy\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"batch-action-item-icon\"\n }), _cache[24] || (_cache[24] = _createTextVNode(\" 复制 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"delete\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"batch-action-item-icon\"\n }), _cache[25] || (_cache[25] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"download\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"batch-action-item-icon\"\n }), _cache[26] || (_cache[26] = _createTextVNode(\" 下载 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"move\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"batch-action-item-icon\"\n }), _cache[27] || (_cache[27] = _createTextVNode(\" 移动 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"tagManagement\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"batch-action-item-icon\"\n }), _cache[28] || (_cache[28] = _createTextVNode(\" 标签管理 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"ban\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"batch-action-item-icon\"\n }), _cache[29] || (_cache[29] = _createTextVNode(\" 加入黑名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"white\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-plus\",\n class: \"batch-action-item-icon\"\n }), _cache[30] || (_cache[30] = _createTextVNode(\" 加入白名单 \", -1))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-h\",\n class: _normalizeClass([\"header-icon\", {\n disabled: $data.selectedFiles.length === 0\n }])\n }, null, 8, [\"class\"])])]),\n _: 1\n }, 8, [\"onCommand\", \"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"链接格式\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_8, [_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\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: $data.viewMode === 'card' ? '列表视图' : '卡片视图',\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: \"退出登录\",\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\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: \"main-container\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : '根目录'), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[4] || (_cache[4] = $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.$data.Number} 个文件`\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_12)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_15, _toDisplayString($options.hasSearchOrFilter ? '未找到匹配的文件或文件夹' : '当前目录为空'), 1), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? '尝试调整搜索条件或筛选器' : '上传文件后将显示在这里'), 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))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[5] || (_cache[5] = $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)]), _cache[31] || (_cache[31] = _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\"\n }, \"预览\", -1)), _cache[32] || (_cache[32] = _createElementVNode(\"div\", {\n class: \"list-col list-col-name\"\n }, \"文件名\", -1)), _cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n class: \"list-col list-col-tags\"\n }, \"标签\", -1)), _cache[34] || (_cache[34] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel\"\n }, \"渠道类型\", -1)), _cache[35] || (_cache[35] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel-name\"\n }, \"渠道名称\", -1)), _cache[36] || (_cache[36] = _createElementVNode(\"div\", {\n class: \"list-col list-col-address\"\n }, \"上传地址\", -1)), _cache[37] || (_cache[37] = _createElementVNode(\"div\", {\n class: \"list-col list-col-size\"\n }, \"大小\", -1)), _cache[38] || (_cache[38] = _createElementVNode(\"div\", {\n class: \"list-col list-col-date\"\n }, \"上传时间\", -1)), _cache[39] || (_cache[39] = _createElementVNode(\"div\", {\n class: \"list-col list-col-actions\"\n }, \"操作\", -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_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_21, _toDisplayString($options.hasSearchOrFilter ? '未找到匹配的文件或文件夹' : '当前目录为空'), 1), _createElementVNode(\"p\", _hoisted_22, _toDisplayString($options.hasSearchOrFilter ? '尝试调整搜索条件或筛选器' : '上传文件后将显示在这里'), 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))])), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"div\", _hoisted_24, [_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(() => [...(_cache[40] || (_cache[40] = [_createTextVNode(\" 加载更多 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, \"共 \" + _toDisplayString($options.realTotalPages) + \" 页\", 1), _createElementVNode(\"div\", _hoisted_27, [_cache[42] || (_cache[42] = _createElementVNode(\"span\", null, \"跳至\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $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[41] || (_cache[41] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n })]),\n _: 1\n }), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[8] || (_cache[8] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[9] || (_cache[9] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[10] || (_cache[10] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[11] || (_cache[11] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[12] || (_cache[12] = $event => $options.handleDetailDelete($data.detailFile?.name))\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\"]), _createVNode(_component_el_dialog, {\n title: \"链接格式\",\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_28, [_cache[49] || (_cache[49] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $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 }), _cache[43] || (_cache[43] = _createElementVNode(\"span\", null, \"原始链接\", -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[44] || (_cache[44] = _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[45] || (_cache[45] = _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[46] || (_cache[46] = _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[47] || (_cache[47] = _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 }), _cache[48] || (_cache[48] = _createElementVNode(\"span\", null, \"S3链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_30, [_createElementVNode(\"div\", _hoisted_31, [_cache[50] || (_cache[50] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"自定义链接\", -1)), _createVNode(_component_el_tooltip, {\n content: \"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入\",\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 })]), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_cache[51] || (_cache[51] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [_cache[52] || (_cache[52] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[16] || (_cache[16] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[53] || (_cache[53] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $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[19] || (_cache[19] = $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[20] || (_cache[20] = $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[21] || (_cache[21] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n return fileList ? JSON.parse(fileList) : { files: [], directories: [] };\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 保存文件列表到本地存储\r\n saveFileList(fileList) {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(fileList));\r\n return true;\r\n } catch (error) {\r\n console.error('Error saving file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getLocalFileList();\r\n fileList.files.push(newFile);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\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.saveFileList(fileList);\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.getLocalFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\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.saveFileList(fileList);\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.getLocalFileList();\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('索引构建中,当前搜索和排序结果可能不准确,请稍后再试。');\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.saveFileList(newFileList);\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.getLocalFileList();\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.saveFileList(fileList);\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","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport \"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/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/SkeletonLoader.vue';\nimport FileCard from '@/components/FileCard.vue';\nimport FolderCard from '@/components/FolderCard.vue';\nimport FileListItem from '@/components/FileListItem.vue';\nimport FileDetailDialog from '@/components/FileDetailDialog.vue';\nimport MobileActionSheet from '@/components/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/MobileDirectoryDrawer.vue';\nimport FilterDropdown from '@/components/FilterDropdown.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\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', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [] // 动态从文件列表中提取\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n MobileActionSheet,\n MobileDirectoryDrawer,\n FilterDropdown\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 === 'External') {\n file.channelTag = '外链';\n } else {\n file.channelTag = '未知';\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 '正常';\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return '受限';\n } else {\n return '正常';\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 || '未知',\n 'S3Location': this.detailFile?.metadata?.S3Location || '未知',\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || '未知'\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 || '未知',\n 'S3Location': this.detailFile?.metadata?.S3Location || '未知',\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || '未知'\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 ? 3 : 7;\n }\n },\n watch: {\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 };\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: '复制成功'\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: '复制失败'\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success('删除成功');\n this.showdetailDialog = false;\n }).catch(() => this.$message.error('删除失败'));\n }).catch(() => console.log('已取消删除'));\n },\n handleBlock(key) {\n this.$confirm('此操作将把该文件加入黑名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.$message.success('加入黑名单成功');\n }).catch(() => this.$message.error('加入黑名单失败'));\n }).catch(() => console.log('已取消加入黑名单'));\n },\n handleWhite(key) {\n this.$confirm('此操作将把该文件加入白名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.$message.success('加入白名单成功');\n }).catch(() => this.$message.error('加入白名单失败'));\n }).catch(() => console.log('已取消加入白名单'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(`此操作将永久删除${isFolder ? '文件夹' : '该文件'}, 是否继续?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success('删除成功');\n }).catch(() => this.$message.error('删除失败'));\n }).catch(() => console.log('已取消删除'));\n },\n handleBatchDelete() {\n this.$confirm('此操作将永久删除选中的文件及文件夹, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量删除成功');\n }).catch(() => this.$message.error('批量删除失败'));\n }).catch(() => console.log('已取消批量删除'));\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: '正在获取文件列表...'\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('没有可复制的链接');\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link); // 过滤掉空链接\n\n if (links.length === 0) {\n this.$message.warning('没有可复制的链接');\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(`批量复制 ${links.length} 个链接成功`);\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('批量复制链接失败:', error);\n this.$message.error('批量复制链接失败,请重试');\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('批量复制链接成功');\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.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('加载更多文件失败,请检查网络连接');\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 this.$store.commit('setCredentials', null);\n this.$router.push('/adminLogin');\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 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.$prompt('请输入新的目录', '移动文件', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n inputValue: '/',\n beforeClose: (action, instance, done) => {\n if (action === 'confirm') {\n const value = instance.inputValue;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return; // 验证失败,不关闭弹窗\n }\n done(); // 验证通过,关闭弹窗\n } else {\n done(); // 取消操作,直接关闭\n }\n }\n }).then(({\n value\n }) => {\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning('目标文件夹不能是当前文件夹');\n return;\n }\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${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 // 创建临时数组\n const tempData = [...this.tableData];\n // 清空数组\n this.tableData = [];\n // 在下一个tick中恢复数据\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success('移动成功');\n } else {\n return Promise.reject('请求失败');\n }\n }).then(() => {\n // 刷新本地文件列表\n this.refreshLocalFileList();\n }).catch(() => this.$message.error('移动失败'));\n }).catch(() => console.log('已取消移动文件'));\n },\n handleBatchMove() {\n // 弹窗输入新的文件夹路径\n this.$prompt('请输入新的目录', '移动文件', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n inputValue: '/',\n beforeClose: (action, instance, done) => {\n if (action === 'confirm') {\n const value = instance.inputValue;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return; // 验证失败,不关闭弹窗\n }\n done(); // 验证通过,关闭弹窗\n } else {\n done(); // 取消操作,直接关闭\n }\n }\n }).then(({\n value\n }) => {\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning('目标文件夹不能是当前文件夹');\n return;\n }\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${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 // 创建临时数组\n const tempData = [...this.tableData];\n // 清空数组\n this.tableData = [];\n // 在下一个tick中恢复数据\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success('移动成功');\n }).then(() => {\n // 刷新本地文件列表\n this.refreshLocalFileList();\n }).catch(() => this.$message.error('移动失败'));\n }).catch(() => console.log('已取消移动文件'));\n },\n handleBatchBlock() {\n this.$confirm('此操作将把选中的文件加入黑名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量加入黑名单成功');\n }).catch(() => this.$message.error('批量加入黑名单失败'));\n }).catch(() => console.log('已取消批量加入黑名单'));\n },\n handleBatchWhite() {\n this.$confirm('此操作将把选中的文件加入白名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量加入白名单成功');\n }).catch(() => this.$message.error('批量加入白名单失败'));\n }).catch(() => console.log('已取消批量加入白名单'));\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('请输入有效的页码');\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(`页码不能超过 ${this.realTotalPages}`);\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info('正在加载数据,请稍候...');\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('加载数据失败,请检查网络连接');\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('获取文件列表失败');\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 console.error('Error refreshing file list:', error);\n this.$message.error('刷新失败,请重试');\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('刷新失败,请重试');\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('请先选择文件');\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 // 生成单个文件链接\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: '正在获取文件列表...'\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('文件夹为空,没有可复制的链接');\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\n if (links.length === 0) {\n this.$message.warning('没有可复制的链接');\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(`已复制 ${links.length} 个文件链接`);\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(`已复制 ${links.length} 个文件链接`);\n }\n } catch (error) {\n loading.close();\n console.error('复制文件夹链接失败:', error);\n this.$message.error('复制文件夹链接失败,请重试');\n }\n }\n },\n mounted() {\n this.loading = true;\n fetchWithAuth(\"/api/manage/check\", {\n method: 'GET'\n }).then(response => response.text()).then(result => {\n if (result == \"true\") {\n this.showLogoutButton = true;\n return true;\n } else if (result == \"Not using basic auth.\") {\n return true;\n } else {\n throw new Error('Unauthorized');\n }\n }).then(() => {\n // 首次加载时刷新文件列表\n return this.refreshFileList();\n }).then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error('同步数据时出错,请检查网络连接');\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=8820054c&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=8820054c&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-8820054c\"]])\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),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

oz2;#p|ZH+tKF!v~x=K^9Ro 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 z zu29XR=exEshQkdfgvx5AIo^T7=u*gV{t7d;FkB*5BRoIY<={)vAhaCoi5mjPV3dY7 zgs&M0$I6$L%q*U!&g^gH)S+7UUMT6m&UaQhuQE>m0uim^Nc0Yr0It zXHJ{34GiRp^JZ31M3c6d*Dmei-$Hd3#&o;G_wGu)DXpWtGcqeyHZHN))%$khoq#uC z1Ps0L<=*sNgv{g~m0Sh!icD620EWwghs?yng0EM3`sIr9iNLrMS zqeFW!JsnGh%@yi%h9%q0O507L-MH9pirVg?T@jK&&Z1!n&0vR>89>8fVO||EGJ`DC zHD-~+pWGvGmEha9Fc!rJ(pkHu$0K+&8;=Vmg{NLzSl57gZ3P2n-?sfxws7Xbt7suG z6vf-DFX2Kts*B+C0=8A`)W~OI|B#o+41aduLJdM@!CEEO1fbiGS}ljw8hH#{2I<8~ zx;7OBN6bRAQ0AYbD2I_+Ed+!#n?`c_`=jFnZxs4$}l|7dkcb2y>7Y>VO;{6Ea!e(Fy zsqGg#=tgzbF!AT}uGb`-GdqrsIcptQ7iUPhH^K~b+k7uJ@(kE;EL>aZ#3(LFd zpbO(1w8wl>*-<$Cu7Tj&#ef>qQ!3BNW*8kogmT^du)yUf)33o{C<0&+2)Z)7N;LKR=>|-ieCuV-vzTB?Nd?TJQ zqkAmBrM?(ri+z8|90{&-bdn!|e#TnUxF}lG9N!R}o)d0S7z7$37!E+xo&w0sX3;(- zD*eJ#xDJ?4Ob?8f&qy;c2KdEP-OsH3&`{ecB-Y1r?It{LQ?d2W!aB>~923 zQtFBY0`*R&;KtZkJGRP#F<%ufI57(37e=B+%%0~*5ytuu+aUrEWSBwHh=T;M5qB}J zwoJ9^MGY=^!zPl(jp=Y3Vs3~^aa$3i1kHQ`96A#y@apYXt9+Z7M{^SI#sknoS@X=@ z-SoTY48iJ%nG(gb*#`HZ(?-1q^qgb*STL6>7vhm5M)CLv+!VEs0pp?`W75b*X%s)X zF&(PW8sh^OfM)TFv(KN6qA~NlX3y-eGqrxT3iG5LG;V-1`o1}DFgFSYePYj;HD3gb zlE!|}=9HdiWF5ognhS){G0i=|$5r${%8{#%XJwb!jqRHnTye+9Pr7Is_%@_w8`>RW zU}i}gFb_G4(b-+*8AX(0nSBDlxxw_gp-+Lc>~s$Cy!p)12}$KF(^&t07(SzAGEMGg z>KsC}gwHUDDi5neQatD`D1%vaAwe~j(?Je75^M-#1DnR$*diq)O0d}?MFJ(*?930z zMsp=9>cpgR42p2DfQp(dqN2{sicA7hx$ZB}SJ49c%A&hYUyekWdY>FECcI4V{EO(U z(4w=#0-ZHbbk-8Gs(C5;iC%^rvS}*9#bRc0CwFTT)CjzbTJdKyWCH6%Ko}Mo)@l2s zwYiLT+t@}UT(7lhrTb2&X0)~W@lbTpQi|@RAz-yg(HWhSq}o~I?W6mjD$pXarbR}= zXbDM4Rrx2%h&G+wU>zqe(Gspmw8V>umT*O)1!6gngp3U0Wx9ZPA!GZ4LDCJyO?pMz z1}60OoqKooJ{iEzd-soS-+jFI$#QyUBnXp9Lmj~@kUU3<Q^kE&HTD3da3 ze%zm!WZ-y}IT;s-^|2p-Zk6iMBC0&`eWVEcBUsH^rP^L=Soq zouKyQagxG@mP>9dG8{bmtsapOKz2H83$jrai7e2_Y|yA@B&${j+=byD%gvT#d6JQ) zBJYsK3>}(tV9=apT?OY}CLBjG_mN=3^$?8*6mdFoh|`fpoEBF?3nXaCBE`m%z#(rg zQQzDim!xV1a0SIhw&`4vkF0qkm)H$ogV+r(BzAd&A2Y=}_}D4lJABq@NK&~1G||6T zrg#%Y@lInTXp`5bV{H~6DWUCxjW0EhVUxY2&)vlDw1i>9ViCcdw!pp!A5dFQ0nXy z#X&OMfJCTHm;s=HxT>hC28dnx+h;t+i*6$&X)X3iBuwMwn0c6}xSQ2#KHHCK*&&1w zt!0N05!%?H%VKJYm_boAzZ;Hbr+pA0H`_Wv+t!yR#7W*;En09wMC5`#nU=% zs<#l4TgXdE1VLs*MRpx_=|Vvidg;D_iVmuAZL}{FpV_zuqrfZ!)i+QQxgboze)G^! z2?F`ye1%fQ@Cv$)4C>Izx~N6K$ySVg$Nf`7?7J9a-^C*KT`XhY#WMC?EMworGWK1J zvF}{}0I+|`?a0gRoN&1P%nd*rVe)?;K)I9&Tdi?s2sD4cBL5Yk04FJjZvt`o3N z1-=Bzn*PTOg=eh%{|t6_VX!-ht7&qA7x~>~hKDcv(z@UrH{uZLZ~8~qB@+-{Lf z{7_M4W?8S-+L|@z;sD*a#6Zq9k0fZ4w~rp|JbZKqycl6hi@JXo8;}IM-O**_kt|~cQdS2UsAD3#e~5ccOO2ycR#4NjC{ZX3F`3i z*3P3H`3~(V4oOglmhRm@x_SSt2M>4m_U_!jhi%>1-FtMj_h5IIw}r1}o@-F+?(Ln& zckOiS!0kJCAMHLAML+rY_U*TJ?j7B~clR^c(}#C=#h`zE_ZE&>RMQhzDLb7)UMi>H=$ z**joMAlnRS+zoqKH^erf`t5h3eTezyv3K(Q@X(js)q3k4CZ}O*HOh|&0ZCC3BE2f* zDdXY{DKZHMW0rCcO%vB;laz&+Vi2w}vO&&hlN`}{o1B9F$T8g@5p9#Fbep`O*GNX& z+gl{0ohC_W>l%4R+izsG7I{Kjo8&p|kUiSo+$JySUhR3UMQ+lKHrb`ER)_4+7P&*) z$R6)~>?MM1(^jNRg^6TD4kM*wwO@sS=%MF<#j=W}%*6VrK zhkFZc>ioA2^>nV?2*|bpwk{ybNv|`DjRlm8=2VfUh>&`sd2CFw$W$dq$J3$lmP`SV zn8EAQziVI$VCIAbkSyilSih-eA+n5(<6*ud2|f! z<~&B4J<1yRa+HCWiN5s)7z3s%#kackjo@gE1gdkA+aBY5H{FTHQm@pQs(tkaN35~_ z4=&CO8?M^k+$2jf!EQ8az3XaTfW7APqmxk>#Ycjs$;@E@jXp`)(<4Rjutpr6u%k1$ z5`k`)%6pwPo*hA0^!m%bF=d`k_JbzuULh$WWB7S=7G_V#P&5O(UKOqFkpZ3VXSJ~2 zIwTYR^RR1m=sIPM(B64QMzrMX`V4=JUS zYIVAwVq28b0lvYn>3((yFSVL{t$~A=tVY`;t<|6^!RduO8P5Zmd7)oGLe@LszAETm z-8-pgz+XS9?~$+TO1M~I5v7<8}XjPtqnS~U$5tfMEuSV=@2gUaeWv7 zb(eN^WbGjq0VtM5@ON2}s78l#AvZJ`)T#1js*>LO?PmBcFgLzK|a;jb~{%>4yzG zn(4q3zes{PgSL|s!*BDv6DO~)TdC181S`X1g1?Pn5!Dd+xuIXdXHUieG@fHTA``*Y z7iP0!pZgZ-CIcvRdTYtXj$Qx>JpWjI1g#<)MT% zQJI1_`A##E)oMhxU$2ujuWT}U&wan^cg4Ooa`awukKit}=^gyG6T_0k-L60^MlG1~ zF527LmFLt@PTT1!;MV9F0UMwmZt}*5>-700=F@=x;>4zM1L|Ctm}6Z?QAGwwr9G<8 zJnS&XFM_!aXE69Du#*8e5odE6B?p@{=L&-lb5Z;K#`A2E$CLkJYsPN62F#$MUhzZ~i+ zV3W;i)oaO>MrD2A@>wM*O!Y?d+E#B7M)Ql!J+HTXXF_nvirCD^!9ginK>pO9lO-s& zRW~QtZn*@-nqON^ZrTQ)3wmqufOEfeM_0XWb-T;MUx@j|EgK$>8E%^bcv+{xB@mG0 zd>5L*E$*#^5MfsQYE`!A984yrEbWZlm*RL^OKQ{z)G39!IV<*^l+3YDepztxTc*?+ z6t^;6}IRv7dPHCBVWVdODV z5n;Kxx%!})BwyjGA%AmK7^B+Lm+0YBsnBwN%uj_wRG3cW9|5b7S7tT-?C2O&gw-2t zO7(_-U^Hc1Y*kNF_SDGX^o?T=kyTwltpu}qg){6TfNNxm$-R;zwuvCsEph5txl9Zp z*RiBBD@ko7t8%+NmnmhY>!VB62&Q625AX<53#_<9GDY*RWXj-0d^84rGK%v~xNd{j ze&d<1zYj{jgUk^wLb=Il8=^Dh2PacU$tm`;BdK!+Sfyo>HgyKsn8+}e1g*oecOz|72!J)=; z5gcwEp)baWc#5&^n@GpSNr-`ZO|HWa$f(YrKH57X>f;Iho53#dz>y`==5`5?+zeV^ zL#eURnDB!qilZDnrkwc!NEwcdYx}1(^ZyfOs9n&otX3_pAqz9L-;g9Bx#e+kf*)Vj zRvhg!z7G%87hY#T z$RUA?=bl_}Q+o3meSkucY3^)OO!$$oqUL)4lv0#kP*5N0HTzzO+6(pA4_cc&psGUJ zCUG4tcB5WvHha;FW;0M4ema}Qz3tfy^37&>uQ{7t>*cdq2EUGb%54M(gzh#)Gd?e- z*Zi*bSN6%Slrjl_7m3eLV+ezcz!{RnIwli&%EkB-fuz;z$z)8#Q%8OU?+eE16xH68 z@4Bq|EI)}FR5o1+Kfr$TH$BfN286PI^*OkGl;^C(N!x&eMOWZEABlmnj8=Sfd;@2& z^<5V>(N?S1i)vd?!X-sE-mr4oSZrsDyalSH3>Fpq+ENeOKI z`H1dA!*6*_!v8Dt;(|&HT#My8EA*|tDWrnM4}Qs=owoF)-MN#mer>lIHkyxZ?PujH z#MtvS^tz}y=a>i=Q!OgsdbLJH29a)|lbEb_w-I4+O2viO?W^@`a%-BaQ~#bNn=^W1 zv|ebL?D%t^a6s808)TbokhgWhCTVSvZ8K$yblULmZL?Hs3;umtCT+tT&t|8!+S~ZQ zk=kivN_*2NuhO4@B?%b^uz!28&I6=(TYS#cm~;o+CckYSn(%`geuG=69!? z<|jEuqa~PXM5|JeCw`IG(h*T_q$x_vd$$6Lt!sXOJrko__PFd!b$s2(Dpa1(N3!#{z|81 z^oBg}ViNkrLXa*d6IBj<%qdh6c{=h-`NX$?nm762ogJ7?K35yF$;j9^CK_!d-Rc)`X!_wTmj+0 zaY#m+q%0}m(ww~W>Pj}7K}+Lmb!%&D&DcW1<9b^(#t-GbO(-jwvbdWT?x3YtQ=eO1 z+1FDgLM|u?q#s#+Ptu>ub?}nHATI`+(9TNpYZ!F#p_efO_R1yrbnj9k{1PP%Tb|!E zB+SU|3inN6FbLm3>ukSPiw>*Rxb!!mHd7DPQ1Xl~Ed0@aN4*TxR;)qp)xE496*Puy zP%f}B_2d=j?K*u9t^#bxZCzTaXk}FzFdzNM`^5ic-YBE}STdwxlVBnMasqx?t5ta1 zK$=+IZML?+WhSLNvl%?@%dR_E8V?%_LHpzkE2fm*5sDXipU-VL2D97P4>lo;S+(l% zU1saIZKV6-zyKSn9EwTwl@;?isWAkdfjCI7j+t z0l)S4XtUo63^qW2wL{TLGw;?a(Y#gj>ZCwNW|Z$vr8?QJSEq}r{b0ol8lR|MELC1( zAp;VO5BvD;p9L+GLFGEgSSYblk|=p%u2FikTHU(FLF3I1e_m_xXR9d^U_o}}ahpr- zk&+H@5hJB^7eCcIe&BGcEFU-*c~1hZZ*8jSaI>_;M6iaujK>=j5;mN!*{sD0Iq7N~ z#yOj%2L4mkz=0)lD{^t5$i;I4+k9O+V_K`wE74555IqJoh}bOt&m%y7{pGSHm7i`K8! z*(vN5W2(nRB5LHRdmv=#rc#S3m0C=xsl}8^v>prPrPNej;;Kt=HB}l*d^Yz}sj=j| z)0o7y8mZT#E;MbhJCqqr@6u6Hm^?@X2;IBa#9&W#;>F)xpMTX>r49J9>kt1?Sj>%K9!rlp4lCmBLpfyYay|E z_|@(E?H8F@F9DwEp4pA>qCJD^U6qxUm6?^5B^T+7TBM;D*DQ?)^)@ijk4?x%9*1(tqG=4qs3|n|X4TvH%uf z5(R9HuV>~NTfrLO_?RA>;8UMjj)8?|Ik4Cx9z#YOZ%a}X%Ierg+a}G z!CTJ#{+g|8-agxkvDt&S8U@wGxR-a)KRgK!!QtVd_v}3!!Vb&Ub?+Iu3yY$}W^A95 z(*fFJA4rdjPAHwd>a#7yK5MUqA!teHH6QGn6;z@3&vxCh$Guq+=V4s%cRBFOO}F|C ze*afVz&*z$0q`Av<-)0A7^4NryC}?g>PP>Z$iO>*6TUx#<(dsu?ooD;Sy4t z>;CgD5ZUap=IO360t7<9X5Rs|q8-PhnLjmW|wy#X+rE&JBJ2{aq5Sl;MKo+R()e)?|e&+gyqkpXjNJ$qT*xBK@9 zlBjPzd-wHc8#xX?=6|uJp*LgJlh**LbdD`N)x4tq%%1y?v>`v%z2~05^V#SLTsze3 z&po^M3v#O&uuS4hS-rWAfs-Os5hc+{M^FL};HTzWa=HJ<6#7MXQ z*po|mNcny*^jP$W?fEl7Yn1+wlT&jV&RYq=4A+cOUrZ{5GY+P-do zvU%P9Mnr`1eC}uXsPV0iQaAU{JcpfoF1v(NUbumO?ZKlu`)!wnUi-l9nHQJ!b@)Ri zbJZ}gU)^iF`*37y;YXFjnH>aC(zE-0w`CZ@Ws*I?)o9orD&M%KfiUcx;ILICmUx%I zFondoQ5Cxb;-O(QX`1mqmTZJe=EKmM3d9Ecv}HVuldJ3*b$w-n*OmtS}g$T&i|iVyt&ntu0k@u!>CS8K)c-iB8SR4-Z>5%h5fyl_SSs zGknETSVZRb(Onlko}o5{mJb{m;o=kOvDjQza6*F%9}bRaiRR#p(=K;8k|0>6U9~_in9oUApPQ#r$&N_Nxt0abCGX{D?~6OdWtBwnX>22w+Nk zLLS^zYTjwL$b=Q75A-B2J0dtFwLPC+w842P=pnEnHAT)(0;o^F^kPk#5+16 z(rTWnmVhTTW~%?TEZZ+7LQKsI(WmmOc9e@2cc$lDh;Y5-Mhx2E8P0Y$%>9({9V}R< zjXG4*cRjqqto-!;2jqRP!3O5+w`_LojljmS!<>EAVEe4Y4%i-Z8em1~fR&`nn#^f3 zmpLuwFsD7J3Xo2yz4orBsDaou-kyit`K9Jq&-wBhES^*mZsWXD zS19i}GX2C7Uu?i!!2HN7Nb3iEbM+B$s#ri$RU&}V8bD~Az&ExdIs*>Ui4QFVQ(7Dz z?%VeNYC5LiI7`wLT+fqV=6BeSZHW9)Tl{+W%1`0_p-kJ7cZq1cgN41LK~hKo0lino3lipz z%nj}@izBDebzFiw749LvxZOX85OSgl20(*35HWuNcI{5H)l&6rRU_sPQ{QDg-wBU0 z(x8$QkfQ3?4B#LtuU4(W=zEcN18bWEz@`KsY`otJz^#6Q0=M|~E)GU61xcgC2BRj0 zNp{;ggx2;DS~P^#pTU96Aqc%QbyvhC83O-54*E9ryWK_mA=ki}KQ#~`))iYcN9)Lo z|JWEvud}ly;#PZNkb5-9z0E;_$F05Zm<8atnk98FU|9_{DDqZ6p8AO~sX0rv&@JH7A-Hq^ zF5rb%PyW_~12(`7mV2D@0CY?eK=+_x6iyD%MXR0*I0)J8n;AxUU#$lHgw%T9KiYd+ zDZ6)}0iMA~EZ7|QJ`H>y1`ane{^J7|M?U{UW0wa`rA2T+V?OAXTl`ZC9lX-Pqkg0h z7yUH0E6E?Evv;d7!{f#sTMRAY&CcW5nCRT$;X&15CAOtuZ*9+NTIB%_?+3JKieIQ5TKvQd@PU!O)^ZxQ)X~T&Po>ZAoTJ*4HuXYj!ueK0HW&2N$1B41C?H zSoDWB@C`V9CknxRK3W-t{ob>Px%fXAv*W;r%$`I)iJD})nL0(sMCBW3*=D=uzpVfz zc0mWXL1WW{VI}=Q?tM$~xg=IQQ1uyGRw(u<-y}+~@4!`&(nh4X$z2PyqqwEkcXG_A z#C6-9n$>iwh0Son+Av+fHIQ1@c_R^(FRdDhCzRM?C~Ua(^$ZFDlYg1_xy; zKYkX|^e##DAzJplnkG@Uo0BH(iv)t$eVlz7KBf0X&w7d=H@}nd%0|Z{s;gETkG)Q{ zpusg^aLreKW#4uC?uD`+oDMspkixt4mJTA@wg^tQNnfMS*O}^U{q8$jRnTG76ztb zshzU-mNoHCQ7o|gUSxk4zE0tpMVyNX%*8~2N<-e8Dw6;Q7V(ri`{GS%ZZGP;eBaJ& zG^BT@ZAeeUTq1JH*WBL)>U*!$Rq(bNc+HyCR7;0ws5)YGI_2&+zpwk)>3e(|y;-w5 zVi%d%b_tc$nJKi;`O_^pPR(-MtwuUX^@+~l`~-((RQhwEMC=Rdb+z*J?BBnlEeA~& zYM_+UREop=ZhLS1#(JsOfzQgqc=3+MK|Pt*aXa~)ZA7S}-&o9NdNI?`|H6VUo1VP2 zrm+twwbr zd@4V96ZY&a*rPYy?9yY+vZz}RH8jIHJbbX<>eWN-&-M$c$pcW62S(7Tc@LWuS|&^s z*W^u+Y%i3;+1=AP*L16xAkRTJ7%RL?+kz~A$^z^)6}k(jU0o=aT! z!SAENa-=m+A_vu3cZdRuFaSt?N-&A=Yl=tYh8~8xDm00%P$i0amsCLEqG1R4UqHrh zz(m!f|36W2HwyiMk=$!4?Kq}vCmsnMsoVO`;Sn|X7w`ysLbV*y5x}1|l#@b^D|D)E zTj~dvY8)te&FX-#qS1idNrF5^G4;Sc6sE9$*>>-B?E&+G=bJ}XP*;|t;-A9jQRDM-M!k1vhi3_9tRy2T~IxN6^7KW?Kp@7uWoN1!%6)b!9z%$?!JaZ zbxR5OooWtL0=C?P*1=xKJpfH0g2Ud`Rk`teQ)h)l=N@#Qdnr=7XbH9l4t~_^s{g3MAEU|>Xex1GFxC%#u=r(>_Qwd`v3H+1JK zm@|WAo0UxGkK{UNI;`HZyVksJ@@TVqiL2wrO9S)Y!BRQ#-;S-igWG6ZO0!E|1_@9# zp&2~dBL_AHA9>`spG6X?O$0A%hAY2lcJ+~vrA@5F^jh` zRqMmOt?rvQhD6kV=f;pS>g~4nS=pqw+itv$S-bH~7RG09Ss0&tqb37iV|%Q__SpfL z%s38M$~bK_r#WD5lerz%bXc>^T20n=So?tOb=ZEB9UL$R@--di>@}Hl&}OdNK_6ia z))=!(vdY={*D?O~jlTo^=QfN#NB=o{tmCrI{+Qi)BZq-$4-5fpexT#f0oH7?)&bjV zvx5$ET&S+e+;)dG_uH)PG+Ad4#_G12({6T{+h`rIW~0*t-)0@Q=d{{vABs4xyMF+K z+ix?s)$Vj?VAmT1GlyYzoqFuzUladY_}9k2J^bt7-#-2wz~5er?X||g^H!X+mZG(? z!(_@!NaCG(4ffzQ79|-p3{5os|KFOz2{nu zo(H7(`V|vzz(g(5YDZae&2JL^-}j>K(_MoR!1K*4R{TKJSTkp3S{Te*6C3B z2^ax1*c7W3wVsToHD~OdjHcrnRJsKtAZr9Aa9cGx(I6Xp4>s}L*yfRS?A>@ia}MmT zBO}h)MIDY4*o}9|Zs`-AO72?6-W|K~t{GftpL)-1=4EW?J$Nwn5eVRO5a{5t#FKZA z7bURLYIVQu_D{clbt%+7aQmln9%z_7p^;vD)B2E2Jb&~s?gvK}yz>X&b{GDCh%q;# z+Zu$%?09rRUv}48c?Wx70k(wpp^|5>fX}C1IGWY0!QtT$47uvw(jI$jxL)veh0k+N zzBcgsb|GGS5*0YTL3P=)mvC+;eV#0jtU=X-hXV#RZ)ta7+z+)HAXdGO(+k_{6w!?M z?J3R!_7N{l^`~ItQJur~5z&xgB8JtfHT3RnHmiBh>_vcZS|8fIr`izE?!84Q^i&&; z?Y`Hrd-hYU#t^%pd#5!V>^A{C97W!sIv;!Y2!pdcOQq7I0o^FK0Cs~h^aQi+ zwdh4tTP}}#)_8q$XM%0T`JOjV-R|c~%sEJOa!>zUVNUmRCCgLpuRx#sxxyMOs02~AG48S!I-$1N`1ID)S2L`ue_O#uL z&3{mHXUvA*ZNtl6N{>QYQO&jOUTnRP*X7ev>Ksx|DP>@!fIWXNwg!}PY?f*7LCUc$ zZfWThAL1`4{)(Nj8+L1?&h4K0Zs^AQ4#J%}`mg8aDK zO^Vh~y*Dt)s7`!g3KL7ukpge6oZy?SqgQX^auIZpoZRQ7XFau#Rk+M>G#K%5cK|0k zbTzDFkH6;uPJAwteaoYp8!vUja^%Xd{9#Z}!Dl>qo&W0P@X(7)q=%x}9m=Yd!&YC= z0K9A{Gc)~J^HR_%{Xw;*{PxDnpU_L_ZaQ**%*XTtuTqs>XDoSkf)|Is!h6DuqtyvZ zkp*e=kw&POxIwGBb_|SF&5;sJQy?hskEV1p^(i>Ce)fu{k67|5R z5Z4bfAW%fdD9hZ)670@06IsNQ4KhQy+SM3el#x#u@bc>g+TW0Lqr^*h)ILG)_l>DO zD&bDIVPXL&AKt{?9r)HTFve{3r_DE@-5=qE%l%P{-J@{a=c8==^(%Y=cYsf&!b`?| zFCL}i(&Gw*5&FGqd`VzEO2^=11m-&Ii#PxaunT=N_>+}0Q3NJleZv>MF;T6CwHkX5 z8RH$vHe5LpO?o;x^+FaRy>u33Tr*A zdl&GQrEfDRka?F@y&l7TGnx5bXO8RMEoHV@($|CQ**z${V!6HX$U*703|ur6be#EK zu8Fp}zp$i~qV@>3EXCv2!V3A|I5%G+;rbbpiFg%#iEpB#pU9E>V>&((B}VWHmn=H= z3Va(BF#=|~VRtb*h(NTedpdXD?b(oukBRN7tM4AwYDKqU)AFWT!!dSHto3@GCF-gl zt@yg<3+g3agw=apfscF17T~#dr|+e`v|hJi1!XL?1xZ}?WX_RZ430unU} zSI{@hzyn|sm}3Oaj_8GT7C?0H#EunVN6g$`RN3$rn1^E~ zBRufQUa#A)uZW)PH!EX>(OHAM{$rbqsyjed0m(_6>#)LW^`zkMSF50KXzsJZYuYS_ z*-mQ?%rYHyv)F3@yOkol6?#6_1~@^vSgn@ym(^+rm3{qcCH>;a3dG2RMEq@R_mG(&rmY+LRNTILcUP^BQcn!-3?`U4?-3Uyk#4p z`sFWzstgx+b$kmn?=2HJwy^CjXxFDbnd^7E@MT4~gn*~IWr$f@xs!UGHs`4s3;S_W zZ!*`GAjFanyYe(`!4Eudr#cSn*mmzbq5Jw8Tel=j{@Z(R=nej^8N+L2K>B?L9!tO% z7r?FlrefIs@(JA^ql067KNNocFL*)>&DYsYU(MXOh^)miTYuKP^i?$QzG1(n>hY`6 z`P9F^ezgprWH1;*TfHHa2!SL;T=44-A_K%-fLxL?4s3nj>GvN;@wmrpHT!s!0#_Yl z$>UL4chFm%7h)C8o~q#%Y6x`=_p*k;DAYBCU?SOz`}2)*{eGuhwB8YgLCiHOAc@3V zph%L9l%zt1J*U;|*)Onv07ckm9M;@uUn;*Li`#A+Sq?;&gHo2xfsv&nvUEyW_B+4V z&~MfY18q@ei($=iIH$5eo8c!&bDXv9p3weVFYJ*4n;Wr(IsmXv**!dE1W`94N>6LU zW>2iaW^8T0S~mN)xa1;V%j1urg3yv0yTX&!?NpTg*ojSxtCTDj8@qW^reYv{!a3ch zD^~CCA`-o#in#67BU}}r%nYI)y)1$LFoi=}bv7*aSu<+eStv`rR^y<#=eAm{j)^x- zr-$CC>3Rv699L6$*SstwOZ9J}#UP!**&mY^?^3D8uE;%A(^7P#>Gtw|fe5^#YO`&1 z1e?5qj}G=vl!<9}WGE0Je}~IdXzw4COU=J5ub4uc=`4ZB5^QFnwx+V_+?&;%Ub7D# zMil=dx<4G{z;X3*I8ahn6N+IN;(7?Z__Ko zp_kb})iW=xwOLwgVRRiGy&h@u-ED0=*$l7nghv)ob=M^5AOpX!Q*v<2S?l+SJ)$c@ z7ZqdRmXNh+FG}l<{EX`@)`G!-ZYM_7&b0)if>j8xVokgE%f>wAaA@?)#>}L3$9}bT zOk&O1p0%38;N?ynTNwlNYn(Q&T-dli87mn5S9_bPcr};1#d|GD8!ANh$GL$V?$$|? zX27f$@3$MuB%v|LkIE}31>Vb2il$nP<;X#sd0;aegG#|Bj?UD7U0ONB+NRnH^&t91 zy1FBQg$}7pix062Fo*OBFD44vU+|8Gq3E*S(2|xZtli!3d*7-9Bj?XlkE-zS5Vk2* zL*3g4RI-2nII8&6Y?~wwLNyroXGbofJ9*fE?_s5e#m%!v0CvU1ald+&E=?IbJ)`R^2!P@ z(*axgAej|#^OkY%Y6?~?9~L~nPLn)=PF~Hc)t%Ac&^KQyQ?{j68 zU>Pusnei+ef3A3*_vQ6No`}oEGe3$f@bio5_K`V45s8q$4QKZzqd5cIv0uAJ6q*LE zlPv#4{&uU?_vwdl1=um1rQtdkPg=l5Tn1iRZ4apWugIhvQrzHrubIW^*j$mKuji>qgZo^f%>x@QkZsw)A7@co@HnKFm@Mc5o42(ZDjC zyU!K-$jZD(p{dBgw%88ucdF>+AGX`|HqeUg%!CU!`;hWg^1x4*VHCh4z(gQkS@ywS z0|k@`uXfk$m|hvy4BT$nuZ))#X9=F4D>C%C@&VEpE$H5ZWtPm}A?HavvCIlMSc7-C z^ck~pRGBUiPSRZ=?B}G%)dqI8nw^7=R^=UmzEHgM`306Hm}Yl5^V3Dv&0pm@S&kAA z!$K>uL2V9$nMK@Bjp1m`!5oGZ@QCO9-Ezc@Ba4|Za4hUC_~_T-a(IXsy*9xeaB$j| zr_ToQQ`62r$PS~H4!YdaH@wAlVR4^3x9svw?%Ya8jd9s#TST&S5PN@BCL=MDI`!#i2}IFB+Com zAMiD&tGVUd)#}WuiP$U(XWUXR$w3#ue@?*XVax-g#*9bvqlY96=uM0x*oV5j3(@wg zO~e`ESgE+e$wib*{pg5(y1VmW6Y#$`(n$+(L_ggxuQqOf@IN+k8e`jX8uqK*tBhF% z++t*v?x=zsgrD>CBno(X?dQu1tE}lKPs3G(QI-m;pzHbU*AUat9;CwLO$2aikwFoj zlsf>{?<1c>HHdr_R{2*FLaU49#K%reAg2Ha%zcGbPLd?z zKI9^90H$aaVygg?BIhuLfPhf%Itrowc^Ku`AMzoE(1lXa#6&QI6KE_CbL?K2oy#FC z{WysDF)lg*5&TfI*)judGq7g{I%Z(s3>=iOr%?(yrBDfroMtIh>V{M5hg0f^(1 zOdP~{nyh3Zf8w(uho0X0xNxJy4`?|AAr=d0MXZuo94tq3Ix8S(Y@&6Bggp&*88|NkF zshr$W3s-UUEGAL>T;Sqe`7l|JAS(kA;*Y;zjR1pFbI2)pq&%Yz#r%;_Blj2AX|f74 z9KoFDvn9~_I4LI=Lj7|AwXASC6+4?0?_t=R=Z-2^_WeIVs}G|GOLMl$;$(qL(04|X; z%#Mp7Ob8M4G{HfI*@b}U9QXFfe|bh!Pl?XYlBih4g5;gb0QBsVcqN=g;xpiLNB}L? zFr}~-E36`8u;I4NdJWW{xmc2^OAm5m58 z^P{2IH4r|FMZ|})+XRQ}ls|<0Q9@#!a+nRogju5ZO@M)z&$+;gq3D4O53mbjS?2!Y zLU6bsL@wk?TyP*mr%6Q6B19nyL&zlN5^$Gx7zEOazB6Mmq86n0g1KJs+(22XPmG)} z11eY8Q3f#HW}7BY+X*z8Nvs$f#1u{KFetZ%B>t2X885R6h-*J358TKRasPp6(s>a@ z*(~Kep2-%dm`+elC-JX*dLQQV?J`OH5r-=%PZG;68GVpZYnt?7I)ingIip*JWpfQj z;9z)`>)rrrV=r!Yq^yz`BYLQ!vt60PtQ3^mC}>~B3&oRa^n6FkDtXbZ8PVCU%yKs* zsugAfF;^s-i9rLON|FujbAnHnvand~m&Ix-MAeee;0HT)FNt9jSPbj!tt(B|LGl<+ zRy;1=OeL9ovA|YS4lIn3ge(3WMY>E;-XXp+sIdx@6-JqPuGGevNTyekP@RPGgAPjS ztYcx=4VUX18=v4Spwae z#@IL3z)t3lSoH1H23*=KEmqUr#dLZ(X?PE6R6#a3swExADUtqi|M~7%Afy+&nqT{i zFqRBoIcepG+mW#I`C+`(qcGxUJom%sOlkwlo!FQz@w{+p~; zKC$x&G9I&1#0AMf#3Ee#3oasLg)&-2;YgJB3JCsPs(}mp4OF&1p6Xnr%I)HHwrrt>%=sR=mEoTn=U;>MI8N0FHIBrX9W@}Ft?@T6I74CP5! z`wJ=SC_V3jiv+c|B=IRFo|YN7YjNhcAU0~A@@y$-g^tmjo{*0Vo-iK~BMQQW*J>kXcb7q*uHl7nfs`_yo+o^x_erB>r_7 z8bB|H#H>qP5(@XbG&)bxl@Ik689yzuJXuk9X7c-5s&HT=Cb`kN3^5c^Y27JBjOxD; z2bF9QE`the=Qc^%rzAiGSs8H`S`7|(Z?cYNHq}Q(XXLWec`*G_9~UI?-=vnGGOHle zMzfL%^;n)3Ga@VJ7as?cj~Bz+$@TH=Pt>iCf*q6yH`kve8|Fz$__E+~^IH39CZ)U# zB?BU9A%-#^`6^jUri%GNAjV1z5*Kk2NT{V1z=#5ISQ7I`@s&g(s}vehg`~dYKz_qn zisZSnVwy=|4qBCM37v3gDu`uT5T=?`Wf!qZ$ckxssM8{h0;0Uve(JA;ph+K@+@HiT zm(W@8Co@zaN(*=hh!L@R;=zs9gbt!lN)09#y;LJhF@I&m%}Z!Ny*@Xz`65OTJBkCG zrVZ;vo@nF-oul#m%%2~VG|&UQD24vW~mik*%e?#mX6cT8Wk0;M8_7Rl9hYw>I}JZZO_H2QB~Bly>Mo0wj1cOa;o2`VLx%DMf(pG7 zQk7(YDe*j95ZWs08);o7=|zotBx=R{Q6D5IT)+h>i2M&|MJzbBkaTOtndwaGapc+Q z919wH#_4m;N#45jK`CFvbgr2v=iw94Y{X5WY}3o|hA$A&R!XJ5nL@LUSDt41hSaH~ zO*+?(_#*XD!#__!ILex&IhiGhTgzgx2;;?^bb36_1tAe~s+eqm(^L{*IBfz@prDQO zTQatRN`;KC`JtK6)aAIUe$X29AM_DK%7yNf&L=>+&jcYYZ+vQNUh8w8lxIbhXZoCj z(90+#I4Dw>;E}Oj^@1Zud@}$V1#W9WxE@3Dwo`U-iX;PRfJc8CHSBkME zep-^I9V`_lZE#T#C0QmgZ&ajY~)nDTj&s*~I>CU=jB6L_jD^igWn{fy=dKS(n_ zAzvvbQm~vGi~&u165&W*N*X}5tBAoHCxm|X9M2?Rp{r3crNzYKOz4mNEWc2vZE&Yh z>Ujhj9E&>cZaymXC)Gd2fFn9JJ+fkK98Nh(F?eWHih(f*V~@4u+tZ9+#Q6q)eHZ7U zloRLxpcIh%m0&*0TdRyTc3|-1LI<@nX5}LpLIRrd$cL>_kiV7x^idmu_-U>}^C(G3 zx(igCq2rd~P>`q&-gCa*m6aqkT9b3r&S%JV6l{tJwKQ2t7EDCp#-^+VGPx;-InG7kIG4v8Tyc@mR2b*`zThqIARrk{`PLc_ zUk=Sew8kj?oThrKsp0L_%>Z$85dv_}2In7-ZwF$&_dxwO4Z%f`s_$HF27x@mQGhUX zz4RUtZQ)PXAhTz3u?9(2j)+1oX2RJ!Hs+=2%FqOy2g+Y1O<_p43CFQWIhQ;own3Oe zpDqjBekL@6YpN?x{Wt>-fctxFL~3I_p&MxlrVJe>*M#+t`GplYO{pAMcK-yToS2E)^vi|gB~8wRoZepD{Btt6JfqV!VCpXUQ?6>k6St%wCiYsMECZnwXKV}5rKi_Ao7^A+d1xmi zG^Nlm-LQWwtz~78tk$ZKBWSF#6g%ZkoE7UeDOiQR2G2^!y_eYC1?>kKD(Q{f_mLdK zN!RJkDH25J+A4hE!3h!!b^J;M*gUVz=lhB(huNk4AmXLrswt`9#q@!6s_fbj^(dl< zGk?ynP<-*_G1H`26WR@8IwGD-!#Ge)O)~j)!~H7sWAcs9iUGV7bzFkF~`7?Lt7j1f+}J^)Y8O|WK}ZFR%Q3d zaY8v_&EU&`fwBs?yFH~HTW-_8U0mibeemGllU{nGbaU2IX_`nO+LKY%nb{@uIw$!<#Xj$5T!|Y=+yQfT%xRXK~Rl4A% zoJ&8udW^5rWX;nYT8Im&BW+B|W4*Dy{;VZE>O?;i~j% z7%`Q2iuT^K#s$58az%5$7F^Jl%tQ*5Ni6N@aam<$P-i?hPne;Md4RrS0m}2D zjcAlV2XSyUKZT8w$at9DD@z6lfQgkzJ_}PRX3SKK*n+R(+hv%Yh1vbC)KZ*el2wGF z37Sz*;8p$nEnM%lHah#V87HcycoP1!UNa1Sw>~t*OUz+omhG`ik&U{IRcz!Gbtt|A z8dYL;CKW#999#`vWx6)c)b4K2_cfP#oabpc6$~E~D7A^hE+<^eF8jd->`137w$U4n zB!hUCKCel3n}+#0iQGjddm=YjHA4n(|4AAE3l8CvAMlfBN%zh}9tD{eX!YK#;xzWD z<2^yv0CJ_#OV(p60mrJ_lX5=NejQ)#K)H)TJEk+=#UaoSAtvuk(-lpG(G~ulNWm!F z+@L3#VN!G{Hn-$YMUI-Bt7*p52ZMI*NFY`YG@gP}N+?YTx&91P)6}i<^+O~!n>X^5 zPF7U5aWN1zZfWjdS*>!!D~Y6y%k>!s-CzRk{qveDo9UcL*S`ynYOSQmXQX^yD{FDI zg#+%0EUH0yXoQn|2`th^WPF3VPF2DPssct_CXJy|Qq%fb7A{ayhfP7y60*NPAz^XF zS09D2CtVM~7)eRC$`+)bq4uE;I<-NrTwQ7=UYeZVhX^rc%Oc{3^5Fnn5z+y$+N9iR zF)w94GxJQK#DqwSxR|Y4$4_Dmh*RB{nM(Z<)&yeDbElwZ6f8itOvCv8#OwfNgwGs| z6UC^{R8=C|jZc>tN+bVma`m&0{hKlF-zMi5mlwmI@bmI&a{loS1FACu3Zf`w8w}1S zXBVfpI(`#6zfDf=&L@ML8{!8i!`qv|@h8Cm{x%u@^YT-iUvTG86nb^>Bl8N zm{*+<(KP5H78r72>MJr*O9`0)FCU#0^Cp4i`uOJd0_1AZm)|DmcOT8*$;YeHpYiMV zW-u7y*Wl*n@~Si}HBJ;zmOdvkm{_#0(Axwt&Oq0igF zKW_2k?(*l$t6x>)pmu^9AQ67gQFM>RX@lW4!3Y_49pd{E8S;|n8q!zK?kDnyHOo`^ zc?XwRKovsj*~x6_hp|?)fiSN_aX8}>dBF5I5qAw9Co4Y_7S#`Ub1w;0t|&?F{Ur&H z7^gb%FGYT2MN2@qFcYIrqw`{w-7OE zxFn#vEPQ9cmLx$S)2JS#H$qhYBuA_&mlaBYl@buXcqob*h@Z+cD@VV05#wLHsN0j! zE2*P0?G1Y8W~^G_7|M#i67{^{3OLbdWyul2onwG zB3LoS3b#078zNsg5`1KH5Q?1Au}6hf{wDRjLS-x+hgDbwh`~S0dy7GQIc*4L@Mp42 zg@@H8`-4|IaUV`HQ9C+85#Of&C$l9KPoMCWAX$?bO+XNNl[a.modelValue?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>h.close&&h.close(...e))},[(0,i.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,i.Lk)("div",r,[t[4]||(t[4]=(0,i.Lk)("span",{class:"mobile-drawer-title"},"目录导航",-1)),(0,i.bF)(u,{icon:"times",class:"mobile-drawer-close",onClick:h.close},null,8,["onClick"])]),(0,i.Lk)("div",o,[(0,i.Lk)("div",{class:(0,s.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>h.navigate(""))},[(0,i.bF)(u,{icon:"home",class:"mobile-drawer-item-icon"}),t[5]||(t[5]=(0,i.Lk)("span",null,"根目录",-1))],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(h.pathParts,(e,t)=>((0,i.uX)(),(0,i.CE)("div",{key:t,class:(0,s.C4)(["mobile-drawer-item",{active:t===h.pathParts.length-1}]),style:(0,s.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>h.navigate(h.pathParts.slice(0,t+1).join("/"))},[(0,i.bF)(u,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,i.Lk)("span",null,(0,s.v_)(e),1)],14,l))),128)),a.currentPath?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>h.goBack&&h.goBack(...e))},[(0,i.bF)(u,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),t[6]||(t[6]=(0,i.Lk)("span",null,"返回上一级",-1))])):(0,i.Q3)("",!0)])])])):(0,i.Q3)("",!0)]),_:1})])}a(8111),a(2489);var d={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()}}},h=a(1241);const u=(0,h.A)(d,[["render",c],["__scopeId","data-v-2d8e83ec"]]);var f=u;const m={class:"bottom-sheet-header"},p={class:"bottom-sheet-title"},g={class:"bottom-sheet-content"};function b(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon");return(0,i.uX)(),(0,i.Wv)(i.Im,{to:"body"},[(0,i.bF)(n.eB,{name:"bottom-sheet"},{default:(0,i.k6)(()=>[a.modelValue?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>l.close&&l.close(...e))},[(0,i.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,n.D$)(()=>{},["stop"]))},[(0,i.Lk)("div",m,[t[10]||(t[10]=(0,i.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,i.Lk)("span",p,(0,s.v_)(a.title),1)]),(0,i.Lk)("div",g,[a.isFolder?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>l.handleAction("folderCopy"))},[(0,i.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[16]||(t[16]=(0,i.Lk)("span",null,"复制链接",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>l.handleAction("move"))},[(0,i.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[17]||(t[17]=(0,i.Lk)("span",null,"移动文件夹",-1))])],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>l.handleAction("detail"))},[(0,i.bF)(c,{icon:"info-circle",class:"bottom-sheet-icon"}),t[11]||(t[11]=(0,i.Lk)("span",null,"查看详情",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>l.handleAction("copy"))},[(0,i.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[12]||(t[12]=(0,i.Lk)("span",null,"复制链接",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>l.handleAction("download"))},[(0,i.bF)(c,{icon:"download",class:"bottom-sheet-icon"}),t[13]||(t[13]=(0,i.Lk)("span",null,"下载文件",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>l.handleAction("move"))},[(0,i.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[14]||(t[14]=(0,i.Lk)("span",null,"移动文件",-1))]),(0,i.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>l.handleAction("tag"))},[(0,i.bF)(c,{icon:"tags",class:"bottom-sheet-icon"}),t[15]||(t[15]=(0,i.Lk)("span",null,"标签管理",-1))])],64)),(0,i.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>l.handleAction("delete"))},[(0,i.bF)(c,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,i.Lk)("span",null,(0,s.v_)(a.isFolder?"删除文件夹":"删除文件"),1)])])])])):(0,i.Q3)("",!0)]),_:1})])}var v={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 k=(0,h.A)(v,[["render",b],["__scopeId","data-v-7579ad69"]]);var y=k,_=a(9267),w=(a(5331),a(5616),a(4275)),F=a(9559),C=a(2687),T=(a(8785),a(9623)),x=(a(6711),a(47));a(9648);const S={class:"batch-tag-container"},L={class:"tab-content"},E={class:"tab-description"},A={class:"input-section"},I={key:0,class:"suggestions-panel"},D=["onClick"],U={class:"tags-to-add-section"},z={key:0,class:"tags-container"},B={key:1,class:"empty-message"},O={class:"action-buttons"},W={class:"tab-content"},$={key:0,class:"common-tags-section"},P={class:"tags-container"},R={key:1,class:"empty-message"},N={class:"tab-content"},j={class:"tab-description"},V={class:"action-buttons"};function M(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=w.v$,m=F.KR,p=w.q,g=_.kZ;return(0,i.uX)(),(0,i.Wv)(g,{title:"批量标签管理",modelValue:l.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{default:(0,i.k6)(()=>[(0,i.Lk)("div",S,[(0,i.bF)(p,{modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>o.activeTab=e),type:"border-card"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"添加",name:"add"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",L,[(0,i.Lk)("p",E,"为选中的 "+(0,s.v_)(l.fileCount)+" 个文件添加标签",1),(0,i.Lk)("div",A,[(0,i.bF)(h,{modelValue:o.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputTag=e),placeholder:"输入标签名称",onKeyup:(0,n.jR)(l.handleAddInputTag,["enter"]),onInput:l.handleInputChange,clearable:""},{append:(0,i.k6)(()=>[(0,i.bF)(d,{onClick:l.handleAddInputTag,type:"primary"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,i.uX)(),(0,i.CE)("div",I,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.suggestions,e=>((0,i.uX)(),(0,i.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,D))),128))])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",U,[t[3]||(t[3]=(0,i.Lk)("h4",null,"待添加的标签",-1)),o.tagsToAdd.length>0?((0,i.uX)(),(0,i.CE)("div",z,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.tagsToAdd,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.removeFromToAdd(e),class:"tag-item"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,i.uX)(),(0,i.CE)("div",B," 暂无待添加标签 "))]),(0,i.Lk)("div",O,[(0,i.bF)(d,{type:"primary",onClick:l.executeAddTags,loading:o.loading,disabled:0===o.tagsToAdd.length},{default:(0,i.k6)(()=>[...t[4]||(t[4]=[(0,i.eW)(" 添加到所有文件 ",-1)])]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,i.bF)(f,{label:"移除",name:"remove"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",W,[t[6]||(t[6]=(0,i.Lk)("p",{class:"tab-description"},"移除选中文件的共有标签",-1)),o.commonTags.length>0?((0,i.uX)(),(0,i.CE)("div",$,[t[5]||(t[5]=(0,i.Lk)("h4",null,"共有标签",-1)),(0,i.Lk)("div",P,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.commonTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,i.uX)(),(0,i.CE)("div",R," 选中的文件没有共有标签 "))])]),_:1}),(0,i.bF)(f,{label:"清空",name:"clear"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",N,[(0,i.Lk)("p",j,"清空选中的 "+(0,s.v_)(l.fileCount)+" 个文件的所有标签",1),(0,i.bF)(m,{title:"⚠️警告",type:"warning",description:"此操作将清空所有选中文件的标签,且不可恢复",closable:!1,style:{"margin-bottom":"20px"},center:""}),(0,i.Lk)("div",V,[(0,i.bF)(d,{type:"danger",onClick:l.handleClearAllTags,loading:o.loading},{default:(0,i.k6)(()=>[...t[7]||(t[7]=[(0,i.eW)(" 确认清空所有标签 ",-1)])]),_:1},8,["onClick","loading"])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","width","onClose"])}a(4114),a(1701),a(3110);var X=a(1219),Z=a(2933),K=a(797),G={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,K.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),X.nk.error("加载共有标签失败")}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,K.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 X.nk.warning("标签已在列表中"),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,K.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("批量添加标签失败");{const t=await e.json();if(!(t.success||t.updated>0))throw new Error("批量添加标签失败");X.nk.success(`成功为 ${t.updated} 个文件添加标签`),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),X.nk.error("批量添加标签失败")}finally{this.loading=!1}}else X.nk.warning("请先添加要批量添加的标签")},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,K.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("移除标签失败");{const e=await t.json();if(!(e.success||e.updated>0))throw new Error("移除标签失败");X.nk.success(`成功从 ${e.updated} 个文件中移除标签`),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),X.nk.error("移除标签失败")}finally{this.loading=!1}},handleClearAllTags(){Z.s.confirm(`确定要清空选中的 ${this.fileCount} 个文件的所有标签吗?此操作不可恢复。`,"确认清空",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{X.nk.info("已取消清空操作")})},async executeClearTags(){this.loading=!0;try{const e=await(0,K.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("清空标签失败");{const t=await e.json();if(!(t.success||t.updated>0))throw new Error("清空标签失败");X.nk.success(`成功清空 ${t.updated} 个文件的标签`),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),X.nk.error("清空标签失败")}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const H=(0,h.A)(G,[["render",M],["__scopeId","data-v-dacf7742"]]);var q=H,Q=a(813);a(4896);const Y={class:"tag-management-container"},J={class:"input-section"},ee={key:0,class:"suggestions-panel"},te=["onClick"],ae={class:"current-tags-section"},ie={key:0,class:"tags-container"},ne={key:1,class:"empty-message"},se={class:"popular-tags-section"},re={key:0,class:"tags-container"},oe={key:1,class:"empty-message"},le={key:2,class:"empty-message"},ce={class:"dialog-footer"};function de(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=(0,i.g2)("Loading"),m=Q.tk,p=_.kZ;return(0,i.uX)(),(0,i.Wv)(p,{title:"标签管理",modelValue:l.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",ce,[(0,i.bF)(d,{onClick:l.handleClose},{default:(0,i.k6)(()=>[...t[5]||(t[5]=[(0,i.eW)("关闭",-1)])]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",Y,[(0,i.Lk)("div",J,[(0,i.bF)(h,{modelValue:o.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>o.inputTag=e),placeholder:"输入标签名称",onKeyup:(0,n.jR)(l.handleAddTag,["enter"]),onInput:l.handleInputChange,clearable:""},{append:(0,i.k6)(()=>[(0,i.bF)(d,{onClick:l.handleAddTag,type:"primary"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,i.uX)(),(0,i.CE)("div",ee,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.suggestions,e=>((0,i.uX)(),(0,i.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,te))),128))])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",ae,[t[2]||(t[2]=(0,i.Lk)("h4",null,"当前标签",-1)),o.currentTags.length>0?((0,i.uX)(),(0,i.CE)("div",ie,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveTag(e),class:"tag-item"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,i.uX)(),(0,i.CE)("div",ne," 暂无标签 "))]),(0,i.Lk)("div",se,[t[4]||(t[4]=(0,i.Lk)("h4",null,"常用标签",-1)),o.popularTags.length>0?((0,i.uX)(),(0,i.CE)("div",re,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.popularTags,e=>((0,i.uX)(),(0,i.Wv)(u,{key:e,onClick:t=>l.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):o.loadingPopularTags?((0,i.uX)(),(0,i.CE)("div",oe,[(0,i.bF)(m,{class:"is-loading"},{default:(0,i.k6)(()=>[(0,i.bF)(f)]),_:1}),t[3]||(t[3]=(0,i.eW)(" 加载中... ",-1))])):((0,i.uX)(),(0,i.CE)("div",le," 暂无常用标签 "))])])]),_:1},8,["modelValue","width","onClose"])}var he=a(7477),ue={name:"TagManagementDialog",components:{Loading:he.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,K.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),X.nk.error("加载标签失败")}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,K.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,K.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 X.nk.warning("标签已存在"),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,K.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||"添加标签失败")}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,X.nk.success("标签添加成功"),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),X.nk.error(t.message||"添加标签失败")}}},async handleRemoveTag(e){try{const t=await(0,K.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("删除标签失败");{const e=await t.json();this.currentTags=e.tags||[],X.nk.success("标签删除成功"),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),X.nk.error("删除标签失败")}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const fe=(0,h.A)(ue,[["render",de],["__scopeId","data-v-8b4291b4"]]);var me=fe,pe=a(5558),ge=(a(8075),a(6810)),be=(a(4396),a(4885),a(9869)),ve=(a(415),a(3565),a(7009));a(8450);const ke={class:"detail-actions"},ye={class:"preview-section"},_e={class:"preview-content"},we=["src"],Fe=["src"],Ce={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},Te={key:1,style:{color:"#909399"}};function xe(e,t,a,n,r,o){const l=(0,i.g2)("font-awesome-icon"),c=x.S2,d=T.WK,h=w.v$,u=w.q,f=ve.Zq,m=be.MF,p=C.u,g=be.TS,b=_.kZ;return(0,i.uX)(),(0,i.Wv)(b,{title:"文件详情",modelValue:o.visible,"onUpdate:modelValue":t[14]||(t[14]=e=>o.visible=e),width:o.dialogWidth},{default:(0,i.k6)(()=>[(0,i.Lk)("div",ke,[(0,i.bF)(c,{type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"download",style:{"margin-right":"3px"}}),t[15]||(t[15]=(0,i.eW)(" 下载 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"tags",style:{"margin-right":"3px"}}),t[16]||(t[16]=(0,i.eW)(" 标签 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"ban",style:{"margin-right":"3px"}}),t[17]||(t[17]=(0,i.eW)(" 黑名单 ",-1))]),_:1}),(0,i.bF)(c,{type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"user-plus",style:{"margin-right":"3px"}}),t[18]||(t[18]=(0,i.eW)(" 白名单 ",-1))]),_:1}),(0,i.bF)(c,{type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"trash-alt",style:{"margin-right":"3px"}}),t[19]||(t[19]=(0,i.eW)(" 删除 ",-1))]),_:1})]),(0,i.bF)(u,{modelValue:r.activeTab,"onUpdate:modelValue":t[12]||(t[12]=e=>r.activeTab=e),onTabClick:o.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,i.k6)(()=>[(0,i.bF)(h,{label:"原始链接",name:"originUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[5]||(t[5]=e=>a.urls.originUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"Markdown",name:"mdUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[6]||(t[6]=e=>a.urls.mdUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"HTML",name:"htmlUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>a.urls.htmlUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,i.bF)(h,{label:"BBCode",name:"bbUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[8]||(t[8]=e=>a.urls.bbUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,i.uX)(),(0,i.Wv)(h,{key:0,label:"TG File ID",name:"tgId"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.tgId=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0),a.file?.metadata?.S3Location?((0,i.uX)(),(0,i.Wv)(h,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.S3Location=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,i.uX)(),(0,i.Wv)(h,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,i.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,i.Lk)("div",ye,[(0,i.Lk)("div",_e,[o.isVideo?((0,i.uX)(),(0,i.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[13]||(t[13]=(...e)=>o.openImageLink&&o.openImageLink(...e))},null,8,we)):o.isAudio?((0,i.uX)(),(0,i.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Fe)):o.isImage?((0,i.uX)(),(0,i.Wv)(f,{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,i.uX)(),(0,i.Wv)(l,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,i.bF)(g,{border:"",column:o.descColumn},{default:(0,i.k6)(()=>[(0,i.bF)(m,{label:"文件名"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileName||a.file?.name),1)]),_:1}),(0,i.bF)(m,{label:"文件类型"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileType||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"文件大小"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.FileSize?a.file.metadata.FileSize+" MB":"未知"),1)]),_:1}),(0,i.bF)(m,{label:"上传时间"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(o.uploadTime),1)]),_:1}),(0,i.bF)(m,{label:"渠道类型/名称"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.Channel||"未知")+" / "+(0,s.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1}),(0,i.bF)(m,{label:"访问状态/审查"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(o.accessType)+" / "+(0,s.v_)(a.file?.metadata?.Label||"无"),1)]),_:1}),(0,i.bF)(m,{label:"上传IP"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.UploadIP||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"上传地址"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(a.file?.metadata?.UploadAddress||"未知"),1)]),_:1}),(0,i.bF)(m,{label:"文件标签"},{default:(0,i.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,i.uX)(),(0,i.CE)("div",Ce,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(a.file?.metadata?.Tags,e=>((0,i.uX)(),(0,i.Wv)(p,{key:e,size:"small"},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1024))),128))])):((0,i.uX)(),(0,i.CE)("span",Te,"暂无标签"))]),_:1})]),_:1},8,["column"])]),_:1},8,["modelValue","width"])}var Se={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"],data(){return{activeTab:"originUrl"}},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():"未知"},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"正常(白名单)":"Block"===e?"已屏蔽(黑名单)":"adult"===t?"已屏蔽(审查不通过)":"正常"}},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(()=>{X.nk.success("链接已复制")})},openImageLink(){if(this.fileLink){const e=this.fileLink.replace(/\?from=admin$/,"");window.open(e,"_blank")}}}};const Le=(0,h.A)(Se,[["render",xe],["__scopeId","data-v-0dc381fc"]]);var Ee=Le,Ae=a(4880),Ie=(a(4318),a(7815)),De=(a(2907),a(8507));a(213);const Ue={class:"list-col list-col-checkbox"},ze=["src"],Be=["src"],Oe=["title"],We={class:"filename-start"},$e={class:"filename-end"},Pe={class:"list-col list-col-tags"},Re={key:1,class:"list-empty"},Ne={class:"list-col list-col-channel"},je={class:"list-col list-col-channel-name"},Ve={key:0,class:"channel-name-box"},Me={key:1,class:"list-empty"},Xe={class:"list-col list-col-address"},Ze={key:0,class:"address-box"},Ke={key:1,class:"list-empty"},Ge={class:"list-col list-col-size"},He={class:"list-col list-col-date"},qe={class:"list-col list-col-actions"};function Qe(e,t,a,r,o,l){const c=(0,i.g2)("font-awesome-icon"),d=De.R7;return(0,i.uX)(),(0,i.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,i.Lk)("div",Ue,[(0,i.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:o.localSelected}]),onClick:t[0]||(t[0]=(0,n.D$)((...e)=>l.toggleSelect&&l.toggleSelect(...e),["stop"]))},[o.localSelected?((0,i.uX)(),(0,i.Wv)(c,{key:0,icon:"check",class:"check-icon"})):(0,i.Q3)("",!0)],2)]),(0,i.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[l.isFolder?((0,i.uX)(),(0,i.Wv)(c,{key:0,icon:"folder-open",class:"list-folder-icon"})):l.isVideo?((0,i.uX)(),(0,i.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,ze)):l.isImage?((0,i.uX)(),(0,i.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Be)):((0,i.uX)(),(0,i.Wv)(c,{key:3,icon:"file",class:"list-file-icon"}))]),(0,i.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[(0,i.Lk)("span",{class:"filename-ellipsis",title:l.displayName},[(0,i.Lk)("span",We,(0,s.v_)(l.fileNameStart),1),(0,i.Lk)("span",$e,(0,s.v_)(l.fileNameEnd),1)],8,Oe)]),(0,i.Lk)("div",Pe,[!l.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,i.uX)(),(0,i.CE)("span",{key:t,class:"color-tag",style:(0,s.Tr)({background:l.getTagColor(t)})},(0,s.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,i.uX)(),(0,i.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,s.Tr)({background:l.getTagColor(3)})},"+"+(0,s.v_)(a.item.metadata.Tags.length-3),5)):(0,i.Q3)("",!0)],64)):((0,i.uX)(),(0,i.CE)("span",Re,"-"))]),(0,i.Lk)("div",Ne,(0,s.v_)(l.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,i.Lk)("div",je,[!l.isFolder&&a.item.metadata?.ChannelName?((0,i.uX)(),(0,i.CE)("div",Ve,(0,s.v_)(a.item.metadata.ChannelName),1)):((0,i.uX)(),(0,i.CE)("span",Me,"-"))]),(0,i.Lk)("div",Xe,[!l.isFolder&&a.item.metadata?.UploadIP?((0,i.uX)(),(0,i.CE)("div",Ze,(0,s.v_)(a.item.metadata.UploadIP),1)):((0,i.uX)(),(0,i.CE)("span",Ke,"-"))]),(0,i.Lk)("div",Ge,(0,s.v_)(l.isFolder?"-":a.item.metadata?.FileSize?a.item.metadata.FileSize+" MB":"-"),1),(0,i.Lk)("div",He,(0,s.v_)(l.uploadDate),1),(0,i.Lk)("div",qe,[l.isFolder?((0,i.uX)(),(0,i.CE)(i.FK,{key:1},[(0,i.bF)(d,{content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,n.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,i.bF)(c,{icon:"copy"})])]),_:1}),(0,i.bF)(d,{content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(c,{icon:"file-export"})])]),_:1})],64)):((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[(0,i.bF)(d,{content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(c,{icon:"copy"})])]),_:1}),(0,i.bF)(d,{content:"下载",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,i.bF)(c,{icon:"download"})])]),_:1}),(0,i.bF)(d,{content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(c,{icon:"file-export"})])]),_:1})],64)),(0,i.bF)(d,{content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(c,{icon:"trash-alt"})])]),_:1})])],32)}var Ye={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.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():"-"}},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 Je=(0,h.A)(Ye,[["render",Qe],["__scopeId","data-v-9968e9fe"]]);var et=Je,tt=a(683),at=(a(5385),a(850));a(8736);const it={class:"file-short-info"},nt={key:0,class:"success-tag"},st={key:1,class:"fail-tag"},rt={key:2,class:"success-tag"},ot={key:3,class:"primary-tag"},lt={key:0,style:{"margin-left":"2px"}},ct={key:0,class:"skeleton-wrapper"},dt=["src"],ht={key:3,class:"file-preview"},ut={class:"card-bottom-overlay"},ft={class:"file-name-row"},mt={class:"file-name"},pt={class:"action-bar"},gt={class:"action-bar-left"},bt={class:"action-bar-right"};function vt(e,t,a,r,o,l){const c=at.dI,d=(0,i.g2)("font-awesome-icon"),h=ve.Zq,u=De.R7,f=tt.Ik;return(0,i.uX)(),(0,i.Wv)(f,{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,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>o.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",o.localSelected))},null,8,["modelValue"]),(0,i.Lk)("div",it,["White"===a.item.metadata?.ListType?((0,i.uX)(),(0,i.CE)("div",nt,(0,s.v_)(l.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,i.uX)(),(0,i.CE)("div",st,(0,s.v_)(l.channelTag),1)):((0,i.uX)(),(0,i.CE)("div",rt,(0,s.v_)(l.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,i.uX)(),(0,i.CE)("div",ot,[(0,i.bF)(d,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,i.eW)(" "+(0,s.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,i.uX)(),(0,i.CE)("span",lt," (+"+(0,s.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,i.Q3)("",!0)])):(0,i.Q3)("",!0)]),l.isVideo?((0,i.uX)(),(0,i.CE)(i.FK,{key:0},[o.videoLoading?((0,i.uX)(),(0,i.CE)("div",ct)):o.videoError?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,i.bF)(d,{icon:"exclamation-triangle",class:"error-icon"}),t[20]||(t[20]=(0,i.Lk)("span",{class:"error-text"},"加载失败",-1))])):(0,i.Q3)("",!0),(0,i.bo)((0,i.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>l.handleVideoClick&&l.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>l.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>l.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>l.handleFullscreenChange&&l.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>l.handleFullscreenChange&&l.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>o.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>l.handleVideoError&&l.handleVideoError(...e))},null,40,dt),[[n.aG,!o.videoLoading&&!o.videoError]])],64)):l.isAudio?((0,i.uX)(),(0,i.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,i.bF)(d,{icon:"music",class:"file-icon audio-icon"})])):l.isImage?((0,i.uX)(),(0,i.Wv)(h,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",class:"image-preview"},{placeholder:(0,i.k6)(()=>[...t[21]||(t[21]=[(0,i.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,i.k6)(()=>[(0,i.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,i.bF)(d,{icon:"image",class:"error-icon"}),t[22]||(t[22]=(0,i.Lk)("span",{class:"error-text"},"加载失败",-1))])]),_:1},8,["src","preview-src-list"])):((0,i.uX)(),(0,i.CE)("div",ht,[(0,i.bF)(d,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",ut,[(0,i.Lk)("div",ft,[(0,i.Lk)("span",mt,(0,s.v_)(l.displayName),1)]),(0,i.Lk)("div",pt,[(0,i.Lk)("div",gt,[(0,i.bF)(u,{disabled:a.disableTooltip,content:"详情",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,i.bF)(d,{icon:"info-circle"})])]),_:1},8,["disabled"])]),(0,i.Lk)("div",bt,[(0,i.bF)(u,{disabled:a.disableTooltip,content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"下载",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,i.bF)(d,{icon:"download"})])]),_:1},8,["disabled"]),(0,i.bF)(u,{disabled:a.disableTooltip,content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"])])])])]),_:1})}var kt={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 yt=(0,h.A)(kt,[["render",vt],["__scopeId","data-v-ddf49ce2"]]);var _t=yt;const wt={class:"card-bottom-overlay"},Ft={class:"file-name-row"},Ct={class:"file-name"},Tt={key:0,class:"action-bar"},xt={class:"action-bar-right"};function St(e,t,a,r,o,l){const c=at.dI,d=(0,i.g2)("font-awesome-icon"),h=De.R7,u=tt.Ik;return(0,i.uX)(),(0,i.Wv)(u,{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,i.k6)(()=>[(0,i.bF)(c,{modelValue:o.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>o.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",o.localSelected))},null,8,["modelValue"]),(0,i.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,i.bF)(d,{icon:"folder-open",class:"folder-icon-svg"})]),(0,i.Lk)("div",wt,[(0,i.Lk)("div",Ft,[(0,i.Lk)("span",Ct,(0,s.v_)(l.folderName),1)]),a.showActions?((0,i.uX)(),(0,i.CE)("div",Tt,[t[9]||(t[9]=(0,i.Lk)("div",{class:"action-bar-left"},null,-1)),(0,i.Lk)("div",xt,[(0,i.bF)(h,{disabled:a.disableTooltip,content:"复制链接",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,i.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"]),(0,i.bF)(h,{disabled:a.disableTooltip,content:"移动",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,i.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,i.bF)(h,{disabled:a.disableTooltip,content:"删除",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,i.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"])])])):(0,i.Q3)("",!0)])]),_:1})}var Lt={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 Et=(0,h.A)(Lt,[["render",St],["__scopeId","data-v-20e5d6b4"]]);var At=Et;function It(e,t,a,n,s,r){return"card"===a.type?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:0},(0,i.pI)(a.count,e=>((0,i.uX)(),(0,i.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,i.Lk)("div",{class:"skeleton-image"},null,-1),(0,i.Lk)("div",{class:"skeleton-info"},[(0,i.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,i.uX)(!0),(0,i.CE)(i.FK,{key:1},(0,i.pI)(a.count,e=>((0,i.uX)(),(0,i.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,i.Fv)('

',10)])]))),128)):(0,i.Q3)("",!0)}var Dt={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const Ut=(0,h.A)(Dt,[["render",It],["__scopeId","data-v-71848b62"]]);var zt=Ut,Bt=a(1095),Ot=(a(7128),a(2086)),Wt=(a(670),a(8830),a(3597),a(9187),a(5407));a(2099);const $t={class:"el-dropdown-link filter-trigger"},Pt={class:"filter-section"},Rt={class:"filter-options"},Nt={class:"filter-section"},jt={class:"filter-options"},Vt={class:"filter-section"},Mt={class:"filter-options"},Xt={class:"filter-section"},Zt={class:"filter-options"},Kt={class:"filter-section"},Gt={class:"filter-options"},Ht={key:0,class:"filter-section"},qt={class:"filter-options"},Qt={key:0,class:"channel-divider"},Yt={class:"channel-group-title"},Jt={class:"filter-actions"};function ea(e,t,a,n,r,o){const l=(0,i.g2)("font-awesome-icon"),c=Wt.z_,d=at.dI,h=at.o5,u=x.S2,f=Ot.Iy,m=Ot.dW;return(0,i.uX)(),(0,i.Wv)(m,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,i.k6)(()=>[(0,i.bF)(f,{class:"filter-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Pt,[t[12]||(t[12]=(0,i.Lk)("div",{class:"filter-title"},"访问状态",-1)),(0,i.Lk)("div",Rt,[(0,i.bF)(h,{modelValue:r.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>r.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>o.handleFilterChange("accessStatus"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.accessStatusOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Nt,[t[13]||(t[13]=(0,i.Lk)("div",{class:"filter-title"},"黑白名单",-1)),(0,i.Lk)("div",jt,[(0,i.bF)(h,{modelValue:r.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>r.localFilters.listType=e),onChange:t[3]||(t[3]=e=>o.handleFilterChange("listType"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.listTypeOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Vt,[t[14]||(t[14]=(0,i.Lk)("div",{class:"filter-title"},"审查结果",-1)),(0,i.Lk)("div",Mt,[(0,i.bF)(h,{modelValue:r.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>r.localFilters.label=e),onChange:t[5]||(t[5]=e=>o.handleFilterChange("label"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.labelOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Xt,[t[15]||(t[15]=(0,i.Lk)("div",{class:"filter-title"},"文件类型",-1)),(0,i.Lk)("div",Zt,[(0,i.bF)(h,{modelValue:r.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>r.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>o.handleFilterChange("fileType"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.fileTypeOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",Kt,[t[16]||(t[16]=(0,i.Lk)("div",{class:"filter-title"},"渠道类型",-1)),(0,i.Lk)("div",Gt,[(0,i.bF)(h,{modelValue:r.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>r.localFilters.channel=e),onChange:t[9]||(t[9]=e=>o.handleFilterChange("channel"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(r.channelOptions,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,i.uX)(),(0,i.CE)("div",Ht,[t[17]||(t[17]=(0,i.Lk)("div",{class:"filter-title"},"渠道名称",-1)),(0,i.Lk)("div",qt,[(0,i.bF)(h,{modelValue:r.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>r.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>o.handleFilterChange("channelName"))},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.groupedChannelNames,(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,{key:"group-"+e.type},[t>0?((0,i.uX)(),(0,i.CE)("div",Qt)):(0,i.Q3)("",!0),(0,i.Lk)("div",Yt,(0,s.v_)(e.typeLabel),1),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.channels,e=>((0,i.uX)(),(0,i.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Jt,[(0,i.bF)(u,{size:"small",onClick:o.clearFilters,disabled:0===o.activeFilterCount},{default:(0,i.k6)(()=>[...t[18]||(t[18]=[(0,i.eW)("清除筛选",-1)])]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",$t,[(0,i.bF)(c,{value:o.activeFilterCount,hidden:0===o.activeFilterCount,class:"filter-badge"},{default:(0,i.k6)(()=>[(0,i.bF)(l,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(8237);var ta={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{accessStatusOptions:[{label:"正常",value:"normal"},{label:"已屏蔽",value:"blocked"}],listTypeOptions:[{label:"白名单",value:"White"},{label:"黑名单",value:"Block"},{label:"未设置",value:"None"}],labelOptions:[{label:"正常",value:"normal"},{label:"12+内容",value:"teen"},{label:"成人内容",value:"adult"}],fileTypeOptions:[{label:"图片",value:"image"},{label:"视频",value:"video"},{label:"音频",value:"audio"},{label:"其他",value:"other"}],channelOptions:[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"外链",value:"External"}],localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{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 aa=(0,h.A)(ta,[["render",ea],["__scopeId","data-v-062d5f10"]]);var ia=aa,na=a(6011);const sa={class:"container"},ra={class:"header-content"},oa={class:"search-area"},la={class:"search-card"},ca={class:"actions"},da={class:"el-dropdown-link"},ha={class:"el-dropdown-link"},ua={class:"el-dropdown-link"},fa={class:"breadcrumb-container"},ma={class:"mobile-directory-path"},pa={class:"breadcrumb desktop-only"},ga=["title"],ba={key:0,class:"content"},va={key:1,class:"empty-state"},ka={class:"empty-text"},ya={class:"empty-hint"},_a={key:1,class:"list-view"},wa={class:"list-header"},Fa={class:"list-col list-col-checkbox"},Ca={key:1,class:"empty-state list-empty"},Ta={class:"empty-text"},xa={class:"empty-hint"},Sa={class:"pagination-container"},La={class:"pagination-center"},Ea={class:"pagination-right"},Aa={class:"page-total"},Ia={class:"page-jump"},Da={class:"dialog-section"},Ua={class:"section-content"},za={class:"dialog-section"},Ba={class:"section-header"},Oa={class:"section-content"},Wa={class:"setting-item"},$a={key:0,class:"setting-item"},Pa={class:"dialog-action"};function Ra(e,t,a,r,o,l){const c=na.A,d=(0,i.g2)("font-awesome-icon"),h=T.WK,u=ia,m=Ot.c6,p=Ot.Iy,g=Ot.dW,b=De.R7,v=Ae.bZ,k=Bt.WZ,w=Bt.vp,F=zt,C=At,S=_t,L=et,E=Ie.aQ,A=x.S2,I=Ae.ZO,D=Ae.lX,U=Ee,z=ge.ll,B=ge.MQ,O=pe.qi,W=_.kZ,$=me,P=q,R=y,N=f;return(0,i.uX)(),(0,i.CE)("div",sa,[(0,i.bF)(D,null,{default:(0,i.k6)(()=>[(0,i.bF)(v,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",ra,[(0,i.bF)(c,{activeTab:"dashboard"}),(0,i.Lk)("div",oa,[(0,i.Lk)("div",la,[(0,i.bF)(h,{modelValue:o.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>o.tempSearch=e),size:"mini",placeholder:"搜索:#标签 -#排除标签",onKeyup:(0,n.jR)(l.handleSearch,["enter"])},{suffix:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"search",class:"search-icon",onClick:l.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","onKeyup"])]),(0,i.bF)(u,{filters:o.filters,"onUpdate:filters":t[1]||(t[1]=e=>o.filters=e),channelNameOptions:o.channelNameOptions,onChange:l.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,i.Lk)("div",ca,[(0,i.bF)(g,{onCommand:l.sort,"hide-on-click":!1},{dropdown:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(m,{command:"dateDesc"},{default:(0,i.k6)(()=>[...t[22]||(t[22]=[(0,i.eW)("按时间倒序",-1)])]),_:1}),(0,i.bF)(m,{command:"nameAsc"},{default:(0,i.k6)(()=>[...t[23]||(t[23]=[(0,i.eW)("按名称升序",-1)])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",da,[(0,i.bF)(d,{icon:l.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"全选此页",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:l.selectPageIcon,class:"header-icon",onClick:l.handleSelectPage},null,8,["icon","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(g,{onCommand:l.handleBatchAction,"hide-on-click":!1,disabled:0===o.selectedFiles.length},{dropdown:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(m,{command:"copy"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"copy",class:"batch-action-item-icon"}),t[24]||(t[24]=(0,i.eW)(" 复制 ",-1))]),_:1}),(0,i.bF)(m,{command:"delete"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"trash-alt",class:"batch-action-item-icon"}),t[25]||(t[25]=(0,i.eW)(" 删除 ",-1))]),_:1}),(0,i.bF)(m,{command:"download"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"download",class:"batch-action-item-icon"}),t[26]||(t[26]=(0,i.eW)(" 下载 ",-1))]),_:1}),(0,i.bF)(m,{command:"move"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"file-export",class:"batch-action-item-icon"}),t[27]||(t[27]=(0,i.eW)(" 移动 ",-1))]),_:1}),(0,i.bF)(m,{command:"tagManagement"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"tags",class:"batch-action-item-icon"}),t[28]||(t[28]=(0,i.eW)(" 标签管理 ",-1))]),_:1}),(0,i.bF)(m,{command:"ban"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"ban",class:"batch-action-item-icon"}),t[29]||(t[29]=(0,i.eW)(" 加入黑名单 ",-1))]),_:1}),(0,i.bF)(m,{command:"white"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"user-plus",class:"batch-action-item-icon"}),t[30]||(t[30]=(0,i.eW)(" 加入白名单 ",-1))]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("span",ha,[(0,i.bF)(d,{icon:"ellipsis-h",class:(0,s.C4)(["header-icon",{disabled:0===o.selectedFiles.length}])},null,8,["class"])])]),_:1},8,["onCommand","disabled"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"链接格式",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.Lk)("span",ua,[(0,i.bF)(d,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>o.showUrlDialog=!0)})])]),_:1},8,["disabled"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"card"===o.viewMode?"列表视图":"卡片视图",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"card"===o.viewMode?"list":"th-large",class:"header-icon",onClick:l.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(b,{disabled:l.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled"])])])]),_:1}),(0,i.bF)(I,{class:"main-container"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",fa,[(0,i.Lk)("div",{class:"mobile-directory-trigger",onClick:t[3]||(t[3]=e=>o.showMobileDirectoryDrawer=!0)},[(0,i.bF)(d,{icon:"folder-open",class:"mobile-directory-icon"}),(0,i.Lk)("span",ma,(0,s.v_)(o.currentPath&&o.currentPath.split("/").filter(Boolean).length>0?o.currentPath.split("/").filter(Boolean).pop():"根目录"),1),(0,i.bF)(d,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,i.Lk)("div",pa,[(0,i.bF)(w,{separator:"/"},{default:(0,i.k6)(()=>[(0,i.bF)(k,{onClick:t[4]||(t[4]=e=>l.navigateToFolder(""))},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentPath.split("/").filter(Boolean),(e,t)=>((0,i.uX)(),(0,i.Wv)(k,{key:t,onClick:e=>l.navigateToFolder(o.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,i.k6)(()=>[(0,i.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,i.Lk)("span",{class:"stats-badge",title:`共 ${e.$data.Number} 个文件`},[(0,i.bF)(d,{icon:"database",class:"stats-badge-icon"}),(0,i.eW)(" "+(0,s.v_)(o.Number),1)],8,ga)]),"card"===o.viewMode?((0,i.uX)(),(0,i.CE)("div",ba,[o.loading?((0,i.uX)(),(0,i.Wv)(F,{key:0,type:"card",count:15})):0===l.paginatedTableData.length?((0,i.uX)(),(0,i.CE)("div",va,[(0,i.bF)(d,{icon:"folder-open",class:"empty-icon"}),(0,i.Lk)("p",ka,(0,s.v_)(l.hasSearchOrFilter?"未找到匹配的文件或文件夹":"当前目录为空"),1),(0,i.Lk)("p",ya,(0,s.v_)(l.hasSearchOrFilter?"尝试调整搜索条件或筛选器":"上传文件后将显示在这里"),1)])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:2},(0,i.pI)(l.paginatedTableData,(e,t)=>((0,i.uX)(),(0,i.CE)(i.FK,{key:t},[l.isFolder(e)?((0,i.uX)(),(0,i.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!o.isSearchMode,disableTooltip:l.disableTooltip,onEnter:t=>l.enterFolder(e.name),onCopy:t=>l.handleFolderCopy(e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onTouchstart:a=>l.handleFolderTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,i.uX)(),(0,i.Wv)(S,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:l.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:l.disableTooltip,onDetail:a=>l.openDetailDialog(t,e.name),onCopy:a=>l.handleCopy(t,e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:a=>l.handleTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))])):((0,i.uX)(),(0,i.CE)("div",_a,[(0,i.Lk)("div",wa,[(0,i.Lk)("div",Fa,[(0,i.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:l.isSelectAll,indeterminate:l.isIndeterminate}]),onClick:t[5]||(t[5]=e=>l.handleSelectAllPage(!l.isSelectAll))},[l.isSelectAll?((0,i.uX)(),(0,i.Wv)(d,{key:0,icon:"check",class:"check-icon"})):l.isIndeterminate?((0,i.uX)(),(0,i.Wv)(d,{key:1,icon:"minus",class:"check-icon"})):(0,i.Q3)("",!0)],2)]),t[31]||(t[31]=(0,i.Lk)("div",{class:"list-col list-col-preview"},"预览",-1)),t[32]||(t[32]=(0,i.Lk)("div",{class:"list-col list-col-name"},"文件名",-1)),t[33]||(t[33]=(0,i.Lk)("div",{class:"list-col list-col-tags"},"标签",-1)),t[34]||(t[34]=(0,i.Lk)("div",{class:"list-col list-col-channel"},"渠道类型",-1)),t[35]||(t[35]=(0,i.Lk)("div",{class:"list-col list-col-channel-name"},"渠道名称",-1)),t[36]||(t[36]=(0,i.Lk)("div",{class:"list-col list-col-address"},"上传地址",-1)),t[37]||(t[37]=(0,i.Lk)("div",{class:"list-col list-col-size"},"大小",-1)),t[38]||(t[38]=(0,i.Lk)("div",{class:"list-col list-col-date"},"上传时间",-1)),t[39]||(t[39]=(0,i.Lk)("div",{class:"list-col list-col-actions"},"操作",-1))]),o.loading?((0,i.uX)(),(0,i.Wv)(F,{key:0,type:"list",count:15})):0===l.paginatedTableData.length?((0,i.uX)(),(0,i.CE)("div",Ca,[(0,i.bF)(d,{icon:"folder-open",class:"empty-icon"}),(0,i.Lk)("p",Ta,(0,s.v_)(l.hasSearchOrFilter?"未找到匹配的文件或文件夹":"当前目录为空"),1),(0,i.Lk)("p",xa,(0,s.v_)(l.hasSearchOrFilter?"尝试调整搜索条件或筛选器":"上传文件后将显示在这里"),1)])):((0,i.uX)(!0),(0,i.CE)(i.FK,{key:2},(0,i.pI)(l.paginatedTableData,(e,t)=>((0,i.uX)(),(0,i.Wv)(L,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:l.getFileLink(e.name),onEnter:t=>l.enterFolder(e.name),onDetail:a=>l.openDetailDialog(t,e.name),onCopy:a=>l.handleCopy(t,e.name),onFolderCopy:t=>l.handleFolderCopy(e.name),onMove:a=>l.handleMove(t,e.name),onDelete:a=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:a=>l.isFolder(e)?l.handleFolderTouchStart(e,t):l.handleTouchStart(e,t),onTouchend:l.handleTouchEnd,onTouchmove:l.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))])),(0,i.Lk)("div",Sa,[(0,i.Lk)("div",La,[(0,i.bF)(E,{background:"",layout:"prev, pager, next",total:l.filteredTableData.length,"page-size":o.pageSize,"current-page":o.currentPage,"pager-count":l.pagerCount,onCurrentChange:l.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,i.bF)(A,{type:"primary",onClick:l.refreshFileList,class:"refresh-btn"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"sync",class:(0,s.C4)({"fa-spin":o.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),o.currentPage===Math.ceil(l.filteredTableData.length/o.pageSize)?((0,i.uX)(),(0,i.Wv)(A,{key:0,type:"primary",onClick:l.loadMoreData,loading:o.loading,class:"load-more"},{default:(0,i.k6)(()=>[...t[40]||(t[40]=[(0,i.eW)(" 加载更多 ",-1)])]),_:1},8,["onClick","loading"])):(0,i.Q3)("",!0)]),(0,i.Lk)("div",Ea,[(0,i.Lk)("span",Aa,"共 "+(0,s.v_)(l.realTotalPages)+" 页",1),(0,i.Lk)("div",Ia,[t[42]||(t[42]=(0,i.Lk)("span",null,"跳至",-1)),(0,i.bF)(h,{modelValue:o.jumpPage,"onUpdate:modelValue":t[6]||(t[6]=e=>o.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,n.jR)(l.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,i.bF)(A,{size:"small",type:"primary",onClick:l.handleJumpPage,class:"jump-btn"},{default:(0,i.k6)(()=>[...t[41]||(t[41]=[(0,i.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1})]),_:1}),(0,i.bF)(U,{modelValue:o.showdetailDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>o.showdetailDialog=e),file:o.detailFile,fileLink:l.getFileLink(o.detailFile?.name),urls:l.allUrl,onDownload:t[8]||(t[8]=e=>l.handleDownload(o.detailFile?.name)),onTagManagement:t[9]||(t[9]=e=>l.handleTagManagement(o.detailFile?.name)),onBlock:t[10]||(t[10]=e=>l.handleBlock(o.detailFile?.name)),onWhite:t[11]||(t[11]=e=>l.handleWhite(o.detailFile?.name)),onDelete:t[12]||(t[12]=e=>l.handleDetailDelete(o.detailFile?.name))},null,8,["modelValue","file","fileLink","urls"]),(0,i.bF)(W,{title:"链接格式",modelValue:o.showUrlDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>o.showUrlDialog=e),width:l.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Da,[t[49]||(t[49]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,i.Lk)("div",Ua,[(0,i.bF)(B,{modelValue:o.defaultUrlFormat,"onUpdate:modelValue":t[13]||(t[13]=e=>o.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(z,{label:"originUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"link",class:"radio-icon"}),t[43]||(t[43]=(0,i.Lk)("span",null,"原始链接",-1))]),_:1}),(0,i.bF)(z,{label:"mdUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"code",class:"radio-icon"}),t[44]||(t[44]=(0,i.Lk)("span",null,"Markdown",-1))]),_:1}),(0,i.bF)(z,{label:"htmlUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"code-branch",class:"radio-icon"}),t[45]||(t[45]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(z,{label:"bbUrl",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"quote-right",class:"radio-icon"}),t[46]||(t[46]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1}),(0,i.bF)(z,{label:"tgId",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"paper-plane",class:"radio-icon"}),t[47]||(t[47]=(0,i.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,i.bF)(z,{label:"s3Location",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cloud",class:"radio-icon"}),t[48]||(t[48]=(0,i.Lk)("span",null,"S3链接",-1))]),_:1})]),_:1},8,["modelValue"])])]),(0,i.Lk)("div",za,[(0,i.Lk)("div",Ba,[t[50]||(t[50]=(0,i.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,i.bF)(b,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Oa,[(0,i.Lk)("div",Wa,[t[51]||(t[51]=(0,i.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,i.bF)(O,{modelValue:o.useCustomUrl,"onUpdate:modelValue":t[14]||(t[14]=e=>o.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===o.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",$a,[t[52]||(t[52]=(0,i.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,i.bF)(h,{modelValue:o.customUrlPrefix,"onUpdate:modelValue":t[15]||(t[15]=e=>o.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",Pa,[(0,i.bF)(A,{type:"primary",onClick:t[16]||(t[16]=e=>o.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[53]||(t[53]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,i.bF)($,{modelValue:o.showTagDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>o.showTagDialog=e),fileId:o.currentTagFile,onTagsUpdated:l.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,i.bF)(P,{modelValue:o.showBatchTagDialog,"onUpdate:modelValue":t[19]||(t[19]=e=>o.showBatchTagDialog=e),selectedFiles:o.selectedFiles,onTagsUpdated:l.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,i.bF)(R,{modelValue:o.showMobileActionModal,"onUpdate:modelValue":t[20]||(t[20]=e=>o.showMobileActionModal=e),title:o.mobileActionIsFolder?l.getFolderName(o.mobileActionFile?.name||""):o.mobileActionFile?.metadata?.FileName||l.getFileName(o.mobileActionFile?.name||""),isFolder:o.mobileActionIsFolder,onAction:l.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,i.bF)(N,{modelValue:o.showMobileDirectoryDrawer,"onUpdate:modelValue":t[21]||(t[21]=e=>o.showMobileDirectoryDrawer=e),currentPath:o.currentPath,onNavigate:l.navigateToFolder,onGoBack:l.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"])])}a(1148),a(116),a(3579),a(7642),a(8004),a(3853),a(5876),a(2475),a(5024),a(1698),a(4603),a(7566),a(8721);var Na=a(8401),ja=a(4813),Va=a.n(ja);a(8335);class Ma{constructor(){this.FILE_LIST_PATH="data/fileList.json"}getLocalFileList(){try{const e=localStorage.getItem(this.FILE_LIST_PATH);return e?JSON.parse(e):{files:[],directories:[]}}catch(e){return console.error("Error reading local file list:",e),{files:[],directories:[]}}}saveFileList(e){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(e)),!0}catch(t){return console.error("Error saving file list:",t),!1}}addFile(e){try{const t=this.getLocalFileList();return t.files.push(e),this.saveFileList(t)}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getLocalFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.saveFileList(t))}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getLocalFileList();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.saveFileList(n)}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>t.name!==e),this.saveFileList(t)}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getLocalFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.saveFileList(t)}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getLocalFileList(),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,K.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||X.nk.warning("索引构建中,当前搜索和排序结果可能不准确,请稍后再试。"),this.saveFileList(o)}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.getLocalFileList(),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 c=await(0,K.A)(l,{method:"GET"}),d=await c.json();return r.files.push(...d.files),this.saveFileList(r)}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const Xa=new Ma;var Za=a(2388),Ka={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:[]}},components:{DashboardTabs:na.A,TagManagementDialog:me,BatchTagDialog:q,SkeletonLoader:zt,FileCard:_t,FolderCard:At,FileListItem:et,FileDetailDialog:Ee,MobileActionSheet:y,MobileDirectoryDrawer:f,FilterDropdown:ia},computed:{...(0,Na.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?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":"External"===e.metadata?.Channel?e.channelTag="外链":e.channelTag="未知"}),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?"正常":"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?"受限":"正常"},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||"未知",S3Location:this.detailFile?.metadata?.S3Location||"未知",S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||"未知"}:{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||"未知",S3Location:this.detailFile?.metadata?.S3Location||"未知",S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||"未知"}},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,K.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={TelegramNew:"Telegram",CloudflareR2:"Cloudflare R2",S3:"S3",Discord:"Discord",HuggingFace:"HuggingFace"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(e=>{e.name&&a.push({name:e.name,type:e.type,typeLabel:i[e.type]||e.type,value:`${e.type}:${e.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:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})},handleDetailDelete(e){this.$confirm("此操作将永久删除该文件, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{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.showdetailDialog=!1}).catch(()=>this.$message.error("删除失败"))}).catch(()=>console.log("已取消删除"))},handleBlock(e){this.$confirm("此操作将把该文件加入黑名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success("加入黑名单成功")}).catch(()=>this.$message.error("加入黑名单失败"))}).catch(()=>console.log("已取消加入黑名单"))},handleWhite(e){this.$confirm("此操作将把该文件加入白名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("请求失败");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success("加入白名单成功")}).catch(()=>this.$message.error("加入白名单失败"))}).catch(()=>console.log("已取消加入白名单"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(`此操作将永久删除${a?"文件夹":"该文件"}, 是否继续?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),Xa.removeFile(t),this.$message.success("删除成功")}).catch(()=>this.$message.error("删除失败"))}).catch(()=>console.log("已取消删除"))},handleBatchDelete(){this.$confirm("此操作将永久删除选中的文件及文件夹, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,K.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),Xa.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success("批量删除成功")}).catch(()=>this.$message.error("批量删除失败"))}).catch(()=>console.log("已取消批量删除"))},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:"正在获取文件列表..."}));try{let n=[...e];for(const e of t)try{const t=await(0,K.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("没有可复制的链接");const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning("没有可复制的链接");const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(`批量复制 ${s.length} 个链接成功`)):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("批量复制链接失败:",i),this.$message.error("批量复制链接失败,请重试")}},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("批量复制链接成功")},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.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await Xa.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error("加载更多文件失败,请检查网络连接")}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(){this.$store.commit("setCredentials",null),this.$router.push("/adminLogin")},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},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.$prompt("请输入新的目录","移动文件",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:"/",beforeClose:(e,t,a)=>{if("confirm"===e){const e=t.inputValue,i=(0,Za.G)(e);if(!i.valid)return void this.$message.error(i.error);a()}else a()}}).then(({value:e})=>{const a=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/"),i=this.tableData.find(e=>e.name===t).isFolder;a!==this.currentPath?(0,K.A)(`/api/manage/move/${t}?folder=${i}&dist=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);if(-1!==e){const n=a+t.split("/").pop();Xa.moveFile(t,n,i,this.currentPath),this.tableData.splice(e,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success("移动成功")}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error("移动失败")):this.$message.warning("目标文件夹不能是当前文件夹")}).catch(()=>console.log("已取消移动文件"))},handleBatchMove(){this.$prompt("请输入新的目录","移动文件",{confirmButtonText:"确定",cancelButtonText:"取消",inputValue:"/",beforeClose:(e,t,a)=>{if("confirm"===e){const e=t.inputValue,i=(0,Za.G)(e);if(!i.valid)return void this.$message.error(i.error);a()}else a()}}).then(({value:e})=>{const t=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/");if(t===this.currentPath)return void this.$message.warning("目标文件夹不能是当前文件夹");const a=this.selectedFiles.map(e=>{const a=e.isFolder;return(0,K.A)(`/api/manage/move/${e.name}?folder=${a}&dist=${t}`,{method:"GET"})});Promise.all(a).then(e=>{let a=0;e.forEach((e,i)=>{if(e.ok){a++;const e=this.selectedFiles[i];e.selected=!1;const n=this.tableData.findIndex(t=>t.name===e.name);if(-1!==n){const a=t+e.name.split("/").pop();Xa.moveFile(e.name,a,e.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("移动成功")}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error("移动失败"))}).catch(()=>console.log("已取消移动文件"))},handleBatchBlock(){this.$confirm("此操作将把选中的文件加入黑名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,K.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("批量加入黑名单成功")}).catch(()=>this.$message.error("批量加入黑名单失败"))}).catch(()=>console.log("已取消批量加入黑名单"))},handleBatchWhite(){this.$confirm("此操作将把选中的文件加入白名单, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,K.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("批量加入白名单成功")}).catch(()=>this.$message.error("批量加入白名单失败"))}).catch(()=>console.log("已取消批量加入白名单"))},handleBatchDownload(){const e=new(Va()),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("请输入有效的页码"):e>this.realTotalPages?this.$message.warning(`页码不能超过 ${this.realTotalPages}`):(e>this.totalPages?(this.$message.info("正在加载数据,请稍候..."),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 Xa.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("加载数据失败,请检查网络连接")}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=Xa.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("获取文件列表失败")}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await Xa.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){console.error("Error refreshing file list:",e),this.$message.error("刷新失败,请重试")}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("刷新失败,请重试")}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("请先选择文件")},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()},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:"正在获取文件列表..."});try{const a=await(0,K.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("文件夹为空,没有可复制的链接");const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning("没有可复制的链接");const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(`已复制 ${n.length} 个文件链接`)):(this.copyToClipboardFallback(s),this.$message.success(`已复制 ${n.length} 个文件链接`))}catch(a){t.close(),console.error("复制文件夹链接失败:",a),this.$message.error("复制文件夹链接失败,请重试")}}},mounted(){this.loading=!0,(0,K.A)("/api/manage/check",{method:"GET"}).then(e=>e.text()).then(e=>{if("true"==e)return this.showLogoutButton=!0,!0;if("Not using basic auth."==e)return!0;throw new Error("Unauthorized")}).then(()=>this.refreshFileList()).then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error("同步数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl}};const Ga=(0,h.A)(Ka,[["render",Ra],["__scopeId","data-v-5c4ee283"]]);var Ha=Ga},415:function(e,t,a){"use strict";a(5331),a(3565)},2388:function(e,t,a){"use strict";function i(e){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:'目标目录必须以 "/" 开头'};const t=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return t.test(e)?{valid:!1,error:"目标目录包含非法字符,请使用合法的路径格式"}:e.includes("//")?{valid:!1,error:"目标目录不能包含连续的斜杠"}:{valid:!0}}a.d(t,{G:function(){return i}})},2907:function(e,t,a){"use strict";a(5331),a(6808),a(6711)},3565:function(e,t,a){"use strict";a(5331)},4396:function(e,t,a){"use strict";a(5331),a(4885)},4813:function(e,t,a){a(4114),a(6573),a(8100),a(7936),a(8111),a(2489),a(7588),a(9577),a(1549),a(9797),a(9631),a(5623),a(9848),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 c=new Error("Cannot find module '"+r+"'");throw c.code="MODULE_NOT_FOUND",c}var d=a[r]={exports:{}};t[r][0].call(d.exports,function(e){var a=t[r][1][e];return n(a||e)},d,d.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,c=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(c++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(c++))),u[d++]=t,64!==o&&(u[d++]=a),64!==l&&(u[d++]=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,d){var h,u,f=e.file,m=e.compression,p=d!==o.utf8encode,g=s.transformTo("string",d(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",d(v)),y=s.transformTo("string",o.utf8encode(v)),_=b.length!==f.name.length,w=y.length!==v.length,F="",C="",T="",x=f.dir,S=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var E=0;t&&(E|=8),p||!_&&!w||(E|=2048);var A=0,I=0;x&&(A|=16),"UNIX"===r?(I=798,A|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,x)):(I=20,A|=function(e){return 63&(e||0)}(f.dosPermissions)),h=S.getUTCHours(),h<<=6,h|=S.getUTCMinutes(),h<<=5,h|=S.getUTCSeconds()/2,u=S.getUTCFullYear()-1980,u<<=4,u|=S.getUTCMonth()+1,u<<=5,u|=S.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 D="";return D+="\n\0",D+=i(E,2),D+=m.magic,D+=i(h,2),D+=i(u,2),D+=i(L.crc32,4),D+=i(L.compressedSize,4),D+=i(L.uncompressedSize,4),D+=i(g.length,2),D+=i(F.length,2),{fileRecord:c.LOCAL_FILE_HEADER+D+g+F,dirRecord:c.CENTRAL_FILE_HEADER+i(I,2)+D+i(k.length,2)+"\0\0\0\0"+i(A,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),c=e("../signature");function d(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(d,r),d.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}}))},d.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},d.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 c.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},d.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"),c=null;if(o.nodestream)try{c=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function d(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,c=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(c,r),c.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})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=c,i.inherits(d,r),d.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=d},{"./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,c[i++]=56320|1023&n)}return l(c,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"),c=0,d=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,x=42,S=113,L=1,E=2,A=3,I=4;function D(e,t){return e.msg=l[t],t}function U(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 O(e,t){s._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,B(e.strm)}function W(e,t){e.pending_buf[e.pending++]=t}function $(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function P(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,c=e.window,d=e.w_mask,h=e.prev,u=e.strstart+C,f=c[s+r-1],m=c[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(c[(a=t)+r]===m&&c[a+r-1]===f&&c[a]===c[s]&&c[++a]===c[s+1]){s+=2,a++;do{}while(c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&c[++s]===c[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function R(e){var t,a,i,s,l,c,d,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(c=e.strm,d=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=c.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(R(e),0===e.lookahead&&t===c)return L;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,O(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):(e.strstart>e.block_start&&(O(e,!1),e.strm.avail_out),L)}),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,j),new V(8,16,32,32,j),new V(8,16,128,128,j),new V(8,32,128,256,j),new V(32,128,258,1024,j),new V(32,258,258,4096,j)],a.deflateInit=function(e,t){return K(e,t,g,15,8,0)},a.deflateInit2=K,a.deflateReset=Z,a.deflateResetKeep=X,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=S);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=S,$(n,f),0!==n.strstart&&($(n,e.adler>>>16),$(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending!==n.pending_buf_size));)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)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),B(e),r=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindexr&&(e.adler=o(e.adler,n.pending_buf,n.pending-r,r)),0===l&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&B(e),n.pending+2<=n.pending_buf_size&&(W(n,255&e.adler),W(n,e.adler>>8&255),e.adler=0,n.status=S)):n.status=S),0!==n.pending){if(B(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&U(t)<=U(a)&&t!==d)return D(e,-5);if(666===n.status&&0!==e.avail_in)return D(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==c&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(R(e),0===e.lookahead)){if(t===c)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(O(e,!1),0===e.strm.avail_out)?L:E}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(R(e),e.lookahead<=C&&t===c)return L;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&&(O(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(O(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(O(e,!1),0===e.strm.avail_out)?L:E}(n,t):i[n.level].func(n,t);if(m!==A&&m!==I||(n.status=666),m===L||m===A)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===E&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),B(e),0===e.avail_out))return n.last_flush=-1,h}return t!==d?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)):($(n,e.adler>>>16),$(n,65535&e.adler)),B(e),0=a.w_size&&(0===o&&(z(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,c=e.next_in,d=e.input,e.avail_in=m,e.next_in=0,e.input=t,R(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))x[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,d):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,R,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,B=8+(15&(y>>>=4)),0===a.wbits)a.wbits=B;else if(B>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,R[2]=y>>>16&255,R[3]=y>>>24&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,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&&(R[0]=255&y,R[1]=y>>>8&255,a.check=s(a.check,R,2,0)),_=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(x=a.length)&&(x=v),x&&(a.head&&(B=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,x,B)),512&a.flags&&(a.check=s(a.check,f,x,g)),v-=x,g+=x,a.length-=x),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(x=0;B=f[g+x++],a.head&&B&&a.length<65536&&(a.head.name+=String.fromCharCode(B)),B&&x>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(x=a.length){if(v>>=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},O=o(0,a.lens,0,19,a.lencode,0,a.work,W),a.lenbits=W.bits,O){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(I<16)y>>>=E,_-=E,a.lens[a.have++]=I;else{if(16===I){for($=E+2;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(y>>>=E,_-=E,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}B=a.lens[a.have-1],x=3+(3&y),y>>>=2,_-=2}else if(17===I){for($=E+3;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}_-=E,B=0,x=3+(7&(y>>>=E)),y>>>=3,_-=3}else{for($=E+7;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}_-=E,B=0,x=11+(127&(y>>>=E)),y>>>=7,_-=7}if(a.have+x>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;x--;)a.lens[a.have++]=B}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,W={bits:a.lenbits},O=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,W),a.lenbits=W.bits,O){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,W={bits:a.distbits},O=o(c,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,W),a.distbits=W.bits,O){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;A=(P=a.lencode[y&(1<>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(A&&0==(240&A)){for(D=E,U=A,z=I;A=(P=a.lencode[z+((y&(1<>D)])>>>16&255,I=65535&P,!(D+(E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=D,_-=D,a.back+=D}if(y>>>=E,_-=E,a.back+=E,a.length=I,0===A){a.mode=26;break}if(32&A){a.back=-1,a.mode=12;break}if(64&A){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&A,a.mode=22;case 22:if(a.extra){for($=a.extra;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.length+=y&(1<>>=a.extra,_-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;A=(P=a.distcode[y&(1<>>16&255,I=65535&P,!((E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}if(0==(240&A)){for(D=E,U=A,z=I;A=(P=a.distcode[z+((y&(1<>D)])>>>16&255,I=65535&P,!(D+(E=P>>>24)<=_);){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}y>>>=D,_-=D,a.back+=D}if(y>>>=E,_-=E,a.back+=E,64&A){e.msg="invalid distance code",a.mode=30;break}a.offset=I,a.extra=15&A,a.mode=24;case 24:if(a.extra){for($=a.extra;_<$;){if(0===v)break e;v--,y+=f[g++]<<_,_+=8}a.offset+=y&(1<>>=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(x=F-k,a.offset>x){if((x=a.offset-x)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}S=x>a.wnext?(x-=a.wnext,a.wsize-x):a.wnext-x,x>a.length&&(x=a.length),L=a.window}else L=m,S=b-a.offset,x=a.length;for(kv?(y=W[$+h[C]],U[z+h[C]]):(y=96,0),f=1<>E)+(m-=f)]=k<<24|y<<16|_,0!==m;);for(f=1<>=1;if(0!==f?(D&=f-1,D+=f):D=0,C++,0==--B[F]){if(F===x)break;F=t[a+h[C]]}if(S>>7)]}function W(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function $(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]=R(s[o]++,o))}}function j(e){var t;for(t=0;t>1;1<=a;a--)X(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],X(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++,X(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,c=t.max_code,d=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?($(e,2+(i?1:0),3),Z(e,T,x)):($(e,4+(i?1:0),3),function(e,t,a,i){var n;for($(e,t-257,5),$(e,a-1,5),$(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*(L[a]+c+1)]++,e.dyn_dtree[2*O(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){$(e,2,3),P(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,c=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d: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)}):c&&"onreadystatechange"in c.createElement("script")?(i=c.documentElement,function(e){var t=c.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iB2kuO3XzKF z0@!Aw8}4q9l0dxAGZV*4;@C5ZZfEU~w@ zQP+!|uD_Mv*jSjY)={rIS8H~iMqs&4o}d6>y{C13lJf)4Y6RLcE_(SuN4RL_1JpA~ z6L;+(s-pKi5_CN$_c-qN_2nJxtX0KUc1nbmSX2KU=9*^yP-@_(9Gy zdJP-jcCJv_7(p4b62{ZL6`Z)tAM9at#Ir zY9JGB={?q6*T|QURcuxCyw-G`pn!LY@3u+7YPgQ3FEbcuneJ11UPtujTaHYt};>!Nx4BI$JlQ zuYLzR8NC()E3g51+QF|r8hrWs;NvguzW93$70NnC5FovadN5}-EwI|e*V1uBVUD2S zNa!P{YujiMNpz#vdE3$0-7F;KOUN&-&g%J%Sa()H+8XNNMqurb+7vD}x}Haz;5-ht z`gL8xW{IJsR5u7rl7n}w77j>W(;_S?P;R+xk^v<2%ILSRqhMo>H9eQaHicT-f9F$% zSBB9#s^};p!Kso&gjVs?6RZ|})mhW?Tg46zw$5WO@DVI9-8edmegiZS+5*Ecq+W_P zaazGvp$rK0gBvzs4Xt~6zSqH~X*sRaq#4x8^WV(}Gi80IJU^p#t^+azzEvE{jr+FM zAo&u4ip6JK%gJkpv!!F$t-Nr=#Avs^^K0%6c7@XOXSzIx1Hdb=X!VTDjjX zVG}pDCLnL=Cere?q7c~_|r;0M;d|a-8jMbvX19={8}&Cd27AkMu*gnyRJ>JgTz)nRqi8cGI*(rfoD0b zu#l$p`-rryz^`p+-HwR^Qj1#FkS54YLmET0R!0rD-RTCzto1?)jLywq%kpI+DEb}S z3Mf4mo0c6AFV9D+_xq?#f-TqdYdyBD>pfci5R53FHlC@n-bdjQAZqz&tVBm_9IVwo z;zXjB=K#gZ_WNkd!1;1zwk%F}dfaXmkLh_6ZER>Bao7r~qYdrqRlnhO$eO7k&BOsN z>=Y{IB3Z1GhE}h$DQy~E-cmbc12)|taN7lci;y5<6FTYN#Zl5q{~R(A5!@~9p*+n_+4!Zj?hRl5}J61LzP>@m3pW%yFli>&Fz$(V*VFb!pXM3zhP zZj#w+VGBDZooc$(M7)Bu33Z}97#AsJ(49DO@VC$gE?WL6y5FbcnVyUk&E@g1!VkF! zHPJCm0O4%-#~3fokD67tb0c;bHN@83fN!ZY9Bs#Cz8{w}H{`*sR|YTs`QFdJ+W*;m zVmC(j15LE^r$EzocSsf-O*l=+^^WTWBf(kV;4EZ;bMXG>gO@+p|K$sJKL7LJ)~5oZ zI+~w_(`5KWmhN*R6;>_|x=8|T*;&9_PSY(kEU#gck-&?yyqw9`{r0_sw|{c?lhKVOZDQPA$9A!q1xxsS6g>RSRjy{ibLaL??tb|t zBgzMYC%WA|!ZpV4YUSB+*4P7q6Wt0^zzJ|G3z`78{E=Yr-L*XA7WBfwhhH6h^zOlH zKUVjNv4P1cZ%pj8)EhJ3t`;&j2Ac$#GZuK*-zs2x#C#3EXGmw5HhA%!dvD%~cE+0W zMq}sTXto=8vK^JpW&mAeC;ucYHa&ndnQJ7*p54N5{u|SAY4!W#l$FVfam&2r1h3rh zb6#~js^>zSirj4iVQ~)1EzMV|x{j{HyZHrnW13yi^=0@pyD0ed zixGQ_gT_`Nz%9xfW6Po3_37|?fHx)4+eziUN&JRqbtrcF=ves8ays3h;FAXbvSz3Z zs^4w3hz}qALI*p<*81p#EYw4nq<&g{A#e-WG^G}A##*GMWB`t{0%cKvv^&9#LYw$L zZUNJHF6@BKZeg<<1g_(2eRMek_Cv8g8*aPpItAKwG_v#R$mKCz7%`@^867_}1nEy^ z!V%qY&fLch2bsq8;>8NuGS-WipFmw>wb(^XW4E|-2(^t<#V0PHjnz$5y_!|I(-TUU*gAh^3vwF78;qwP_Qixz44;I!zw%ytqMhv}>8cR?RM&7Pj5i zWq6_+v+F~P3k~cWF$mCY*cr$aL3P&YXfT7aeP1|%m6XccH zGqvGkf)O-P&&Hd?u4(&!`F!y5I~rm;GB!umjvzWMbGsc4odizhvwP3Ibm#Vm2XFl- zr_F>1i4F1xvg&r7K%dcacW(cl9UH83Hh~%{Cr-{|64JI}NTYkgI&Nj+Okt~|@_@3A zjT>Z(oetXFuYNvw{yjE`!E3J^y#EQD!B3DI-A;{OI-j`!5bzD%G}lDO8yax};%QVa zOW%g1L7!H);6z6an_v%b0>J`qai>EZGizc@)D!1_T9<6DJD%0X-iAFag6F+8AGCtTd0vXn`?F z9t?5r5!Sm;Y|;oKNb*GQD^k`abRrb6rt>v1g1rQS2T6$%e%+c4Zzo?p&&dAZtse=> zr@{ue2pjymd(1S)LgCHHP#89zia^*{yAkqSpA&4j=~0Av1a1kZJhx3-0u)7O6T|Ru znk1L?d`yfDv{&h)a;aM3LN3$#EEeUPON16J$3{PR@ss_R zp4)%>CALN8D0S3RS1!`{Xn+;u?{$-%>G%92j5+Z~bWS{2u^LbrCQw2(UiZDmVn=Nz+(KD=yhh45;&yEv0CP53rWl z=6-=qun|k_0@8BfvCa?f|9W@-?U!W4vgJ06?DlUzfAF85 z39_T7;@DJoHpXi_gLrcju^TXawzOg#2Mn|wvX%eqt#|%*`_;Q2{%-KEFUPTuB)YC? z`ybxg|M@F-zI=P|$&cB1So<+LXWjkni=W=P{fj%dUm3jm@%}&k$Kcj0T0|XFWv-g+ zX>IJaET_Qk>sn2#lt34W8kE@p9wI@$Po`~ZadAS#wG!+dv+eYKZTP+w2_)ow>)_pw z?tXMjhF_4xI9r#xUuCc&b$tkzLV0z{qX^ROCy5MQ?qCFapjO#^st?9l^an)cf_q+W_O=k>GS;%L&h=+6L7g@_h@QB%X>s zs!SbFq@a$eGBU}g+jSab-D(rB1{-3(FKHwB&8gOFkszj!jKBcI1aVnN3a|v!lhVa2 zYH-(bOn0|vIS%pYry~pVi!0hv>DyXOn=i42qG11=W8a7kNck=lqr^BmMM80x-bdjM zGORYV9v=8mW6ktOmT%(@bVrInXaMRikXndCKoD7>bpik3(ctIx8hz^#p9Ci;1@uuk z_fSoo<%VI9>FLxaWW}%45Sx;aSd5K2lT3w|CLkpWj!GrQRGGbxZlwGUiTxW+BNy+! zXEpPsDZ?0wNkuc%3!Gm=J%)vv_SngFt*`4SFz_z6g4}t}ZCgGmV%vuE6B`@#<)-W9*?6p++sp;J z)y!K(cUuof$?96gXM8YZTgJ>Vj!=wJOSwLdxEUt%3$bG0jZ$5rLtG>~#JiCXjH5x( zavFBmBz~UgI-h^3=0?5W0OEnkhoQJODH6|fy}Wi3{>$+doMUxzFq|5dJ3du(wnfpw z%kSL%@=N(JAKd!G-9Npj>3w4RB$v`FN?ddEdXFCIutB)pAWthPyN0fk)bw;n2;x;S z@T_)T=a^baHevWA5FJo8FfGy~L1RlIN>~@wQi-E0NwI=Bll6KD%8L&za8J9t#9PH6 zuoXm;O@+7{xUfrtsD7p6k*0OsNT*D_KW$rWD=^BX1a&T3&3uqTZ-JmU2B-w2OnUMb zr!I4ay3*HoyycLJ`y(iiA{R(cK4$pdo^tQ*soM=1zS|@OBl$?;F25W)mw;75ccdX$ z;afRfE}RF8^n zypMB;10w;GNv@v*fR}@#g)%=KqVHfT)FAl)f$oAW5A_Nh+q>iUT|R+)zcHpt%kolE zR*9BaB~)dgMO1(O+{JYbG0Pmk*3(v*VOg1f4YG9{9Z28OJ)nD%a`Nf3LNG}Fk#F3aLzPnRUIimFK( z`VrecW$%Y<{3(MUW2H$J6+-O1vM{^2G%rjRejqE>3ycEWKv=Sh{d<`<2!xDbgb)zL3IUU_Ic}#N*Y;avlp%sc zMri&0sFRM{>Dt(fcjArg#2wX%%?nhr3N)foFi}pS>AIjTmFx&i^6(4^qB^I!U{ObH zDRS!p#08mciKZkRwNxsk?1lH?Aa|Kq(k zJ{%&oeMD{;O7{h+=o2bqIdKLNqt#tT={DUa*12UNw9}`e2D*lQ|rQ(-AAH4KR zTzAPf^|6(g)`S?8+J8uz#|)k0*R92ONT|jiroHz`mN%$0F}H6Y{NjVy#PEY~?1}Lv zoEWM7(G#PPZ@4v_51UAtkX!?5z-$W69$52-F->gukf$ls1x6$ChvCYVPos8d1Yr3E zq2e3E9xc)wC+ugKl936i@7(^dSS;owzrXBp*%3|2G$9n#lc*DcliVVpBb;4W&{3BN zE#W$Doe3F7p(<<$sjgq^ab~2pMT)0|hIJBEBD<)lM$VEF@d31k(q01UKUrxQ(+o<) zJz7ziq@8~d_2C>-AEv6~rl<4a4F+^j?2?PZcM`ODUD2^cYOttYFY_`yrW#AS!lvl5 zhTL6GVaq0FE^z6H=tXYGC90hyg%ByU5(ppDjjm+8iZv&5 zCBUZ%L3)#flJqW-Md>EVkfkqf&Q_Mno3o)Ty-kcJK^?dU&CSg%>ZnDir(kJ;dJ4`j zmP@*hHtEaR>JoD^T;y(qi}Opmj&|6`GJRK_o2UOTluAp~p>T0_t|X-M+mig4y1*A0 zxq?I84N1c7ksXWdO2X}{$&Zoe+b+oCeXpU_(W&U?YA6rqHn^tccWiv4rZsJHT|@N0 z!mfuqT1}(>p%(7cv^jQRSPzBeyn4g6U9YBnYpJwUU0TxmlF0kI5P3Tw^cH)xJwoK& zU?OjmiM+R%*Ibvn%QcN1QhfSZ)HXIr@ysdIq4Mw+Jgr|uo1;YEn~~_7DvyNszapF+ zDf*UtzNvIJA^dh_;rF;k-`hm>Y|e1jkY&RG*j4iVLUPbYp4)XydbPD~lA7kXv2BN* z(F%QyA*`^IF8(pwZO>|L1zJt3QUXc!CudR(=Gq_1Gvdbc!+?(T4KmPyERc9~kTVzh z(NM?Zhj2$1$vk{Qs3W1Q4E3h%LNuXA1??s%T}A^Nk1oQ1z4!UQ4qkg@@XG7=1#ct^ zli}UnvZ(9-BZ9Z<6R$wE4P!vfBlMIP6{rv1{Bm5VlW`9s0k5*2MZkkcMblBpgwas* zkVoYuRY*zsg&4?nHRhnSvwGur{z~Cah;h_YeSblDzsb<%a#lmU$n+;Eb2-;2#B7D0 zJApR^=!WwHjoLr65uFa3!wK1HeJWQAv7E^ z8ZLP@eIbQvjH$(9nlovZBFN8RZyR=b0d?Da0ElVjOlXw=NOFy@2hzva&zu%eZUt@o z0pR4-Ga*&Nny7WY9$1ebUv*6)pxxYj09a||Oh}{XWf7#b#v_0e)0^T-u}uOD9Q;ag zy>*J-9amD-QClL&8%N6eV>u|ETRR~T6SUUM`^5{?%|uHSFD^n0RCxGUNho_$&~&kS z+GV%pp@=FAL|v@rL7(|J&eAOnWjfA;3r!}+>C2TJmUn@i(CHmbo%?TOutqqGW|;LDANY4 zBW%EA$;JI!aaCr=FtB4b!|McTvVonZr^Z}ho4z*EJc=7dT?{RuU`skdkCpq0m;gxR zpU-VRLmEN&mD&m+alB?ndjw7{y#+vJz84A(D6?boAN<-0Kk2=UhD>O!QAQ}@tl3k< zB+?)pBTTO%*>FrIi@3BBaVZ`Wf~_H89VB7PH^^*i4$P*Oc+`c6Nf=eJ47AI+*0=>g z*6F*VT6OI0X&N)q2@L@_rz^|>rb^3-Cv3zzq%|clS0s+-ml@9>TV-ie&CeTYypX82)3SxrKTlK{D`R^naL#tjA~WuqS=l$0HQh)_P$ zNsj)R4oSZ3ILUV{tC>a!oy1FjCs}#3-AN;kWQ$wGYNWkv0)`{@E4IuNhmX}J7X#ex ztboG)1Y~Lm%SG&CSc(}-HLy+Cj+)m)UJ^o!2%cut%$~OV0Lq~t<2xMbd}6fAbk~Cr zB`ezghyP=6`}W_ycrjEL{OyaEw3>FD?vShu*zo+})w{p=@^4?f80u13F>H420Ez`_ zF~-5&x&6w$=ia*e*B4k})|Vz5XR<3j-H7O|R`#C;@Y0qd*YRl6J#{WjH~jxNT}g@#fEKlHeKwQ#a+(|2zYbmgW?Ws&a(5SYBa%Q z@&G%HdCr_N)hl;oKqU^*l-Y#WMUPNVn*8A_D^1UB8`x}H&Y{Cd)AVJ&l|$2cg0!of zHg>kD`HL_xI2{=nTvQAUu4fq-l*~qTvD}Q3b(|!|X@ZV{fx+zJVo679+?JrcNbLj` z%Mh~o1btaqDlNdv#kmrTMqB|8KQ@$0kqH3YmJ1En&WRs|#ujO8Z@O@1-Hc2Cjz>Sw z!B3XsL;HAaSRcSOYkltCNQIeN1kxbyWS~g)7A)k!=%u1=LU}8O`3-=mABFghlz$mq7U697M2$7!@-=fNp zgat`jOB0>(LuQeb2mVG6K=Ys$*wA3}KT2}H_Cd92j1 zkXl;pmLy;9cm$Z4nkM*zNZfgo@a{9jvb1~JTDoX9vvc8}qJh{IOx_wUd#0wF(EyH< zEV*i9h+LInQ3zL=RCRp%pu2N=n#2bnj;uV1(LrU~R>!w|ji*rn_hf4H212ux1}+m6 zi?0a6t*n zlhT#Q`d8J5=P=~Rmy;N3)H)Ej04dMH0l@bHXg}(}I*CP{*vr5OQ%_#EE%+VF96prK$o1JZm5Bvf_Al6NxptB0yMfpn# zS}j3Kp=gdlXP%$!`e3D#7R< z4Z)^E$E;5u0dzU}Icct&lA|-tZg&*Ok^QX#uwF;i3ez_IK+!gV)NzeorMadFjs#T& zBzww-aiK@3p@yoN5;`BzsD^k986+|`BA(4q-gpt4{ZQqjs)?k#zI2C|uI6zKk#fRh>1#O{K2rmc+>y6FAdjmxaO_^adnFZ$Q%Y1|&sq zKoWWb(8q;$GD(mdhAGbgZ%E?j5X=n{=0&gX?Wy(qi5X9`$Dv)tAk?0u zVJu506T22AbuvoJT0x3UAy&B*;#ArR3?eHz6nR-{@u}oHl%gz-wz_2bP!*y`BZNz& zV4~$l*>1@(7M>I=*KHrkWF=`(@?g%R=@Na1>b{L2qGwt^yps}jio=a@gM3?k!5fgA zCchWyG=8AyG`^pu(^y)XUnEOS66!QaV0@3DATYo|vZ^B-uxyOXEpl{F|{{BsqB-jmcDiGQ|( zn2)6JE3ruvd}Auisict@-!>d|u0!1?J2beU8HBo)t$3#t;>ZrN8{q;n+i@qBFb8=b zHDk!4vMtYry6u!tkmo%}WH_XWXj*CS8FYQLnfj6W1xZSTogiI_fPrvo(p(HiXmM2G26$|n#N`pn zhM~L>P|JB*oJLSs85PDc3Ly){!((8iPj71C`*4!U^@fex)H<&acoueAl0t^{6eaVn z@ZF(ON+$E}DRlyJ9kzRs5`~3)h=R?BB=!%>2M)QfMSZF z$buzO3rSWjOeut1=ZxF+2}>iEkv*N(dK`||JOL2HS~kISmsfl;(`(U)i_WR8ZTk(6 z5T_wFUP(Y110X8QcIgO=_?HNn%Vcxg3Yy7oB!S^W=;kzK_hE+O{(S19fuKRib?BN< z)cL8CMT^BIi-lKFJY;4|$P9F}vEdZ)V`xh4ae8`6UWj#(ex7PjhdI=wtWBBi$}y)I z%5SA9uQRL;hOgIl*S8u;PZZu4U#j)t>R-i~EX&Piw6_i}@^=@#2Ar3|GiL{Or4fEP zJvr8JN?7FzXD%vb5m-5?0#4zG>12zj%XB9i9vP!IYD<;PJTioGY_>9la^bu&OU%rT zRczgr2iaI-fuk2TRrw%U@1 z+C{xEk1Q_opX;t`2UZ7#a$OOV<-z5;=>lsx#K40Qi_>%q4a;lTM3&*wiBrZ;%Al0IUcdnM`=Z6 z7?g~zu`I4gouce+hiQ`H8l8+ruJKI7b=AqpJHx;aF0`g_r`=AaFGqr6L($mlST0 zQM^j|+FL@=OS)CC=+kLVHtdF*+DbXuN=fLHMmp%gUQPTUy2P)fyrYggyHsd!A*FoA z7h0?B-jqIE6jjn*v+{nTo$2Y+*O3oVLIRNjD#C{8Ho9=M7bC&PNt+(_dwbzG2Fs}- zCED)IXv`^}{Y2$uyaK^+yHsIVMnMrISs?VNMXyWYYxu>Tq)-sXDYe?fDCx?y3aL>b zpvBU}u3+wRB`2oq>$N-%8^`g+L*3ntAk^J$2eR&NC&)@3W;SP+8YD^{b~P|=1iZQ3 zQJSbz*_x=;bWPNHTvw*(qppvqa=Q3{Dkr9D>W)-3brY(l9CsW@RXatpzOj`~k=$-v zl~W{+`~S7VDWomQkz=HIo$KE-ZmlW4B2w!GI05@9_xRnUyyH}g6lGPBqOgV~Aqu7e zkB>1Qtzk0E^#IZVNut(tyd>4RLf)1D;Ci6uDEr3Ty&lB;bL^WJnh^9yErS_hBKn9V zFk9bH3Csw)(uXR4si$idl}q{Q=u*xs9OY{{{g8d39^+ar?EzV(N)P9{Eetm^Zrcy_ zimhCtqn$6#?LUAOA2r~cz*0=`OD7|K>9oQxUCiQ_DkU;!&PxH}j|IlbAYx6{f-u&( zk34}L%04l>gg`ZeNP1!k1-0ai)qvc}0N|9onVP_` zB9%vB7_ZOl(o%=tLFJOVea3hg%DJ2fIhTvPb!z3|h1?6}BGP?8*ll+Q+m;DoTWZ8O zy1`$vow_b3r-IYI>j;g(*=~E2cwt-Rx#;x06rH{&l+$-D>+}`yho|q&z_=8k<6voA zE-lUJ=o~dQUI08GoUfD?=XD)jrZ49gO4R&#v07r8Se9rom8J3`{eNy&1XU?5EeX5i zLyQB)&eIAVTVt|9LKc4(*NCTO&EGqWmvTIt8%dIuJ zwl+)vH+BdHPZ`mC0J0F{-u6I23d5^M4JarlnKNGhI{`39cyq!)RXU3-vfFP4J6g%RynlZXiEQmAcf}-qU z5d}0hHbp?;Z!S4J#mFI^OKdbbDDlu!$>Hg-$)U;B`{QM@$*3G73MC~>I#Gz44~s5D zd*hOZDF4l+jwcv(#B;8VK^;=e_H^oaY;5Y_Oy_thankF?XhX>slTI5#7V(fsgEu!W zWe7g|n?o2_fB>>(4#rp>RgW_gif6JLmxOq{|5Orsc2W|8v5%V!C%c6>|Egwy8A?u2 z{o#<5Tcmd|VoH&n{GpM6+9vUAk zA`m_H8UesVP-Zmx6C^R=iec|-;{8NxM@bAaWa&^ZnQ_+9NHl&gX1A{7BaBi9HEe=C zPMavyEtU+!aCtgEPJbXP$^@B-*(J~12npK$?dR{kdF$ZAU)_7|B`x$M2_X|%iBMd} z7bXB0b-U$3{Q@;`%MLf0NC1JhEYl=T7L2j0`zAK2Qf2H^jjUcM0brT1Bkzs~@EsnF zpAAO_8qJj}dLQQ(<`$`VY_U>ZU~;qoOUA|l@lJ$-1uh+Ay${VcAm2S}8+9aZ8uT|M z^^H0b90mO5>qGhpOQp5}$+%H+GaqJxoKSW0@q&hvZg44?1`@aH+D4d&gT>88Y_2uO z_1c)`tPsf|Md0nQ2+eOmOsyZmooH3My7F4gV>)U#jP)IsU~bP*iT$^KfA^!W4!-;- zEOFL#2<=wl`NxN(T$vgC`1!#{pN2&OLL9ln7hk*c*=Mmb%+I0rb$!FgG@xA}}*YGnlZI!#DF0cB?hxjY|`>@ zJFFpIoMjGfyx6MkcFm@ZJ(9an3Cl)rFI1$$7pq~3i&g3U3CnM|TwD$x#dB2R@ouYS zIjvK;LBdko3dZ^(lN^)AdebNO5l*?U9Xu9-(kZgue~8 zS+FM*9`^hN{VgE(>5hZKs^I}&>~#Gt8io|9(9*Oa+}I%87#UOLsYVAJ8-_YVbPEHA zRro(o6iJ`H0*9XZuCB~!yteotYKrH2H2aAvl<^Ve;i0ZjNW8rGAgYMxx=c&)O8mX3 z!yoH$n#-t0ZR6Cc@TyK}6j|*yF)i5Wr%K2qqyvUA2?K0}!%fcy6P^=2U^U|N1`eN6 z9e$MXB+dkdbDvt5o?;RglpjqP54LpC!-Y?ygV#nw87lNJ4i$OJ?v|D=+|cSbraHWHoR_ovmk@lj!LxMO|a=REsrz;*Sk^Z z;9v_P`=m9JGl{<)xSaxI^n@@!Sjz6OiR1dT5M?_!7DXvDyI9Rtz~&EZ%JF!KELMjMHm9UlSkD;u^^9>}jNW%}%W_!64S8Zt zr-FLRqXru#BfBq`bY(P0jC@GJGgjk47>jI;^ik$*RU{C zw>IWchpS&(O#O;Bx$Xasaf}o)99{2)u+#)6Y#(N6uM-bBXLPaX7Vly8Rx2f5GqJx#lk#Z&#O2?` z39CLEXUe$TVnEuRi*%D6*Qp??0a7d`TxeU4#jTEc7z%CwwYLxc^dEow;;nD7)PA|b zxAuSbZ};B3#WVdO*Li~6=yqz>8CHTtg?gW{%!EttEvP_P45}@2qKnaqdVkk{`#K(psUJjAN_2U(xyJsQhnAcEFguofLP`D$)1cQrQJjNO! zS0`8I)Dcn#m+?jzhO`)ej8P1OafZlsnw5EFh%D;ISVN?K8WRjp_8J;%gj{7-Sx`pE zJfy}Np_(OjlGz56@3F?nbqAG2WsHnVIQZz@gV%mM)<`$8Gs*a%_*lc^ir&hSN{27M zGkE^JP#Qee2zP}ndE7B}ec}~5c6U5PRym(mEv1Y!lx)XFI`N^jg;N6`^1MxjkoS`E zuPNJlZ=B7vE_<2M_J*8fD1Dz=29=y zOCHZxZGdt3IPQVtK`We`AVMG6J>!~?$@IlH?!NoM-S>Yy_|;chO&h%O?!ikh@W%%_ z?Cet=ghSdsL#v$- zwN7|=mw1%U$MyM6bS(D3L|i-^*%P=TB*S?eY)wxqk3)PKBm0!GYjoTW%~<@-rw70K z2#6<2JqBO&4LYkG+IMi7(aQ(*+o5{bg)OgKeWSRQ0F#fgcCl^G=M74 z|4Y_go^C_a#)(-Fg0|(hqopm0PPal~P+ua}2@F=on}SRm7O?%;7K!f!^yv_fJ>4Q3 zL@-m?D`HaV+`0YP z!GC@h&mz~+(2Y@@4LvshFffXCRmijtaqZK0r}{6Z8Tu7h!LdLQ?b_9Pf~RV@YseCgiX; zq9A>7(lM0?H}Q`Wm%_5fYEl$~B({+zp*LdQIsRyslRWeRLlymThJ`;6VAG%LatMTI z^w9$ggOHUx_o9e4O@lSwKedFB8f}qxh=wH-lMsv2NaAsxM-$Wu8hDXSAnZQunOzW+ z*`|ag%`+t_xxm9AsuNsDBGa&VmmfuYkAUh}=JHWgC#ES1cXqO|1@I(~# zasrBsS$hr*BYic=g6}3@ox%^63f-pL9AN91Z6nJuNkF_d-LqNrbNP*$C_Od$e%KaB zZ1Yn}^I@X!@Xg9FGu^TBp(n;Tw8=7WvTZq%bY-j*>%m5qYjLXOOhfeS7!Tkh_a8sH z`~HjE9zEEoasfcKGC^}ZSeqt}>Q|!X#GR`;L331E2hDNaoM?;R3#zjdv?bgg(p@-$ zjVh;?>fGdwMsO!B`-6=t7syuUCums&QRpMi{S4mzWbo_fqDHw4wYo4tqclnaIK16@ zfAGnxQCnQrSzVld;RNVy08B?V!B~=Pm7!Jqh*N3;E*34#}o0^UlYfDpUjbb!5PY?*S<-Nl+3E9 zF-)iAB(o2be~LJ#xK!+7k~KOl?<^-#Zxc7R!MxdFxsUJ-w;R+bQ;2e4*X5y{1NLW# z+I`h*F7iokXNZ}Bv7B8lEH|3&9cf&2RDd_|B@`vK2&)5TkXmPmV~=@EZRBsUhjFn>*>BTga50LV4`m5aNg@vPi0oF2(Q<(i&4be>3MH<}Dwu2lD|(N6js= z*RY{v@d|R86@F-TJ=?F@MQq!bJX<+wRrl@0shiRmJuYR_hPX#}cuLBJvRa}pU`hAi z(7FgdXVs++W=R)dQI~$ss>>M?HMEb60fv6Yq@=ZxMbj)tm3-0z@)Z)ljCxGN5L2Ni zXeZQVXM0Ucj@>CLaH6AK%M7-tXbj$5h9@RQEHrG_C)7wwwQ2SXtnAo|&J%3Y;zTf; zeVs~JV{c@tV|Ym^IL^P{{pgkwnwf>xOl+Z-WR~T4Y(;W-E_wDTa25=*5i7;-p@@yw zq=u*bILBdnJ?i?EYk8Jgs9dj%ak$?M{o!2CYFW-DFWPRSb|>Ky6uSx5L}chP%fXth zW}Pg9pZ#|5{!c{o>vYSUXwYr*!3W%MO_Duep3X9jGD`7X6Ld-{rLKs)1ybcx%uGZeYWccg!^Y?j+Zk6v-4TwJ$`(ZPSdCn2dy>p z0SDZ{9csIUogrkw_r2MLtO2h-mV@m&w{~Lmp#AD;w?X|_9+Wn~oi=;W{H&c_%o_B? zYTCk^C}zyf2een95yym@s`C#zkkKqILlxB~2KmND-Jjn5>gR*!lX3fz=HcDY z)u*OSwt|SyJcU>$M3gwr>`vS?BRMhWk`r^8O$=vW=E}n+hPfND&=(*bRZ$k7m~*jn zuj`Xls=omKFZ0ZkqLR@wPp$>$oyHt#3M>c%m?cw|$8uuto7nb=mX+-SY#L}yYSSS1 zF-*pJh~bKJYjc$ea1~++(u^s~y5v&Xw7m8hx2!qNZOo~@9tZD!H2CPP zgo{U}=MZIK6%P7P%0+7(w?;9`QmB;>#ITyUWUZNz)M*{J=v9l}czo8VBqNO84Z97j zaUon(T7l(!3M|yAVhn&d%UxcQ08;DHtGsL{T#MNaXTT;}83mxy)=)Svq`=7x8ks@E z8P~+wdy|~;J!TInRR?I<)ygflrH^Y|M7+YT%2AdEwODk&gREN6)~|*~M~IM^9n{7oGew7-DfRR;zRRGTl{kXE5^z_PT&V5l!LL+Ub*5Pp@5E zzk2@I`r`&QE)i;$jj;3}f$QNG0Ww_+NIRd>c$9)< z<$D*;oh^2-=R;fx8U%#U=ncZM)}oL7KFi@o!l)_GrE8NSO%R^fXx6_RSg=}7D@Vrx zVa1vMdQC$_N7-%neN1DsFpvm?iT9&`T&g36+<5FVLAficj>8yPlDF*0>fLJ2m(u%?2dgm^j5 z{q%HR{Wfgi6ONp-Lt^Zpm|_?O?|8^XXc?Nuz_3Y>b25Rjnt2>0RdiyonB@AoW}fKF zh4PeP1k=-M0kBJMfC93t_lfNjsU0>|P0KOCEao}{;tA*$ZWxBr9xEufWHs|ak*eWX zDo{(85&;$c?j|G0yv21Wx}4XO=2GQW^W_LIYldu;>dQ|0Tm|~xo|BxaK=1eEI77;m zIbz0~;WO5DcO+VK*nD{;nz3k>#$5qM5TchFgNL}CGK>dW7j#(3mBB}=ERF{p?^M9k zIYrYY{*iIbAB8Eo+wQmy=sIEzFwX`Ao(WKUF|98V^GcKV%mN<&kRjN82-SKh8&~U*L#5x6a&v{=k;Z=8TrPw!?|o^&6s`I;NO0_|1$_y!D8eO zUj6v)zkGS;_A7%IethumM}Pa`r*}X8%fSb)fR)&fU%C77>;Lrl@blcekkNy?spr0h(R@&!pXRFbk2BxQ1vYQ#v&lX>o9v1qdAv`P2Gq2GiT&({LrMR3TFB6WHjf(Oa1pSgpj{fJQHQ{2%a8qfg5213J=2fgtVL5Dy*zncc_};gP!)1y zJya_rVHQ*?&&8xq8+8OhSXeY2DM}5p{7W5S|1(uaaT5p{OC(gn*QgwTNu4iwHjMy) zK!3mNB4evJlCQ!Gt5cH0ES@ck@Olf%_+28gaL?3uNz0g95| z){e0+ur;hvgI@M5+tSuf5+qN|#VtaD+6|PBye3jZPuDCghoUVOi}?~di;Jfh!PNwt zZAz>cxj_aPk@&FSou&n*X((Zl7lp2+dt12t`^*rNnw>>uBI7<LSOk!dj?Zujzp3cWT^9+X%#R=swnSJQRhU+wN zkat3V@NsJC5V=?#mlF9JL^YDIo(E%I3HkVS+%mNF$Fx`s?6Im{sAx1W_E?24R<$Tl z_E`jMFg7{QR~O6wztQ_$&V-w=j4huc=e5Y zZ@#95f$jTUKGcBnU`f@l}kSpOQLW?i*wQyW7oMGCM)A)4x= zo*%zY{TkxtS+#3NtadBsdksSyzrL2kb}*vCsPSq!s%bXLrP8;LUPILQs&;L|YPag+ z4`kyol)r|+5UMt$(mG}N*37*6paRyog^f(~{@ zRjNQG)t7uol_LxDi+vPD!i+I&DNdARhj=%DONiX<^nQ3Zg*KRsW@JMUlsTgv5tB34 zNc3@qyGi@ccCiQQ^ysrRh85;o9hTDgk3Qn$6&(k{jEXj-SW!dRigh>rjDoH6ag2;c8 zrml$jvd3BQw8laPSsH>6tO*?ffIyB62a{d_5|@=!>RqYU7NR^Gk+>$2X+sg87|BLwLQlhvipu9DtT?}ynfB%u)1(4=YjwWtgj5A+jap6r_O zlB|AQ#su{VXau4g9uqDJR!ePUZ%+~{K{^a|wM98O{J`}{5n@?_qSq(EvBdqJ=TuW$ z5V>&(IP%G>`#zeMt1InFqO7plAhFJrX$NCKIUk7{X;9d%2uYR^2C!0Ihw%)VoGX3a zL}3jnb?Kcw87bp__6wBi5iD|<$nr76CjtC$y8$(EWM$%FID??Xdn$-Cf|L(j7zZ{F zY}uq5wZZzBE0xs2o^;H7>NuyT^E9`K7;8!qzHVdif&4G*Bh`WWYe!3I612!AfEE;; zcYHt~L`fYG7-0rw)jRuU1-SesZbB1Kd)|s&0Wwg}#_d zX0sPRy2pzus94dI^d4bRC6@&`kSNmNGHo^yzcA4IF$ze8+${G|i-6pI)wNwurnU`m zz#`Zyw7~rXKrC11OwvNRZ_Upy5Q1~1Z=>9|7UpL+aU};=2_4*yv+6WUOV#EktJ9pD zTbOT*t~1-jjV57rN~LC{NyeyCB})supXy?B$y^v?Y^XzPL?o`f8FkGng-fxt$@Q!*K(7(guCU^!U9#g2_{SYXnjeq0WXQNn;d{+YVK~X`_nO;eF=-cR`JIkhvC8I!MciCmQNKaPqtH#=tC3$o0U( zjUbkTQZ@`%j4Cv0I3jXGuJB9R2_7TcV2)lfy9;*Ey4%s&$ILJYH^V>}wgSuONopB6 zU8$^hN#rNJSY=sAx#C1hJt`?iVyQ)!xmu7o0hnLp13l#X^BV*ObvP2@+Q8}QKo(Lc z3MHm&nx4jNLHFbUsf=#o891#CBGPs8Z|tgd4dMvXY~Qs*yxIP>z7GEorW%w`VM&X@ zu1tTduxFN*kbw0J_DG(6)A?8uA9<96jQpYomQ43!RxYQoWfL$xQ2k6O+0#^9b%q}gMDloPykbP0(h zm|0?-4N{M84@xu*xHt%2bd&nOg;z)A)(=`ux8w7?<*ddf&kk#F#?kd)#2sprP~7#b zfUJ}2Adq3K3DZ*R#bAp#(hccQoA^EscOcF0QVo@c_6(7 zGe?iUtX>!;8OSIcb2*o%w_z1p^U(sa-=neqK&eA%9gN)G{^0J<{sOSDg+%kI6^liPA-^2?|3WkoQeSSmUY-Mz zbDOz9mpvO5aYm*eOqydCBYkw)>$>j)&)j&LgG z2g8nQnK_l0h$_s>?cNLE-v<03${O1k zG8Yt?PZK}vAX@o1Z#i=$VT!S3hk<{>bjmtKtiXPYGtwd&-qneV;9wTGS zN&4^W*W@9HFpDsVgq`L@?W#tblfa>xYRaQyAr)b4vf<`L!{Sz)ijo_`9*#SAl69x! zIz*Ejl0p%V+ni$aDK*H{Dw9%QiurH<+M}Q_xq}G^NUrwv(TCjYKg#r{osGi}MJ(Mj zvhHe3C{0-ub^9D~8sd;Ul|#NqCQOt?G^R?F?PDkSQ@E%)P{*x6(zKQt3d0O-A)4nV zM#6mzao&!;0~Ls*S__pXS@MxE#=KzRqBD8_e>}JU+xHH>{MUoe-@g0T-%ysO-?SWT z+c#n;DEIqFzHors_*7Z%1%?iV!bsR*D{>u|-dHZQE~ngg7fH@A7&rDDINYZ7aBtQa=PkkB%L2k1Ndm*r3r-NSlD(+N9IbZhy=(hCV{s4 z(oVxwr1@;!IE23AJ3;g&VRDLl3mv(<&l3JjDL_@FAnAg&^en^BMvCO0F5 z$MFv59+#2K3M{5K%Z$i`#R-jk#bZtO1RClpmNjv{n8VM0AB&&v)egdASZ zDsI~DW}YdweI<@gBtvGkXb9>JzaB|k^Tg> z+?Ot#=3klR{iO@1W9Hm!8jClrjwTs)>)@qNg=5_1iaRD9>zbAuxm8V-mzhmTd>M`y-EG6)_BQ~Cd<_E2H{@c%mezY6OS{+8*mI{YvDK!()pT_t|8{B0C;F%T2vH+~ppA(d3yPP$^KPYYjTB_rl6kQt9NXKW{t{^dn2V~$@WY7^QqX^(7#tatXc&HhR~@=?(@Y-|ih21O@;71+7%z<8== zG&Z~&j*!E?do#oggBmdKsAxv@eF?YQYb?kL*d4DlJ-2O8f%vuMsA4>!b*Sr+{lZAn zRZLFi9AjEi<2-Unud1dK-HUv?()mp@g{(O|(twB&sxJ#C*}Xk-q`ZE^kC8rSQ+{>lC;QWWXu-UKtXFpxros!L8_iEtD`C7PU{Fw?T8rRqiHR#G*j zp)4pF8!|nlXR5MKBxAQm*P2SH<}k`?B|l?{rlP!xX#%6+Z3;6Hhjy; z^J$4FLQ2FiOxsJT;sNx$0;QY}N^r1KrH};@?52`pL4!1l8qL;XL{f3OlW6)zxvnGd zPm&HGNXU>GRbfTWP?89_z^(XdB7Uo;rHB((rexv#MyW3KU4%ugj-@X+J+?1KiMix7 z4S*O3;GYTw2olv4Dyier0|P@66)DpTtvM20x|1sq^|`;YK|*n7rNm~28-C&l#gxLD zw(ENNJT6rA!xgv!L>sbr$#DwSH_G*Z=>1}`sJ;#31waV(?eBu)!UQ*j#$!@tO;tgav+{X@^A%`|G zp2BH49Rivl;35RRle6pW?QPUUs~q--EQ7hR1EUCT?p#nNJk+BkgHxq2#vu(F&o3vn zo*=_oa)0RenJgsUDpNdIQULkXrlTtmHR6wH4vNL1g^IWqQA}91nCR<7queh9!2=eL;xKhMfB8>05LX&CnQjzgA7y#+S?eIrK@#7QTOP zy-6JPgx&`WM?HGm5nfnRmSCvBNzGDR_r`Kni_Bp@JNVDf{`SRBM>?-LVK)!OvF@R} z`#lWDIzQ8~4itsLtImSS+%Yt%-2m?Oc1cfikHtoMQ}pFG*kVQ}lym|GssI)Jll z#Xa--h$hJ(X7Z|l)Sz5^UC_wkTBac;DZ(1e>#Av{2oNrAn7QyYkrReNpHoy8pq+Jt zT-OJ-V-x#UBZs@eR#9pI_?kG!cgcZLu4ml@ey<<*AxW^g@dBx#%7nU^=5x4xD7isZ|p%(=p5X@8-ccr^K;c|ndL;EpVRvYveON( zB0lCUDRL&WIut=6c}6>G3kh+)DUlu4r0AOJw<#sxES2-A#mb1zaqT~yq^Z9!@?XZ>`eDU1i)}Ox94`n8YH?CZ%UHR^n7417mj$YZzUCCe3uWVeYU+G=x zf9u;dg!#588 z-`_DhyYuB=4}S5%;I$X`|M>dBTR*z{myZWu{b>K4F9u({s`XVVD2N$`_QA9otf#ww z{msGW%xvfF{a?QWsXIah_Hoh72dMX0G;LuJdaDmw_sUXfVO%npUo6oS_wx(ovff8P z6=PNHquJ`x{J6c$E-nJG%`TR!i7GfhTQ1MiG0ZJg;s3>QsRaKoELG>(bD6eMnO$6> z@8=fjn3v`j7U2K#+$?>+w6H{^N?agX>DJ?V4SiWLpyeS^~A|jk3GKjy(dneIeYH>_b*&rzx3qgr+)A>-fWnp z+1j$6*|yt`+j-XWgYM4m^&2-!qvKnJ=97_egGcIpjo}VRo5iPg8bIZj4o=#-;2u0_d4>7;ONl`a*cd-I?#_Cncc%j zkIo|7C?9FA2u?Z<|1L6cZ z)-C`9)Y~-aJhF(XrM;$JgLl#6azmn2uz(ZU`@*3&W@dCsCwVXP zvkr8H4WKEH5?bCJR<;687u9K3KXPP#FK=fTMcoZ^W~OcgXnuCeFx=_sJb#0A_R5Z4 zSt0Rt`+d}tHjP@fgu*SQR;~2ws51UeM1&9{+Kd8^;Pzn<`&@RtZQ{{wN&d9zHL8{K zp1VmjScmairzyhu_lOsB^L*1qju6+m?GB`CASPG{2$53PiMQ1XOJ+s@Bh=tC=j5$o+?Y4LeO)hhtWNAJBqxd>U>)T} zNoe28(=FgCBTE{0n=;-}RCU+MYs4`%B#keOpH9)d<}}@+)CvvC8^>F6y&dniaUZw3#T%ibzh}`1OOo|6=S4>W3-d3Hyi-H zkAjeMblJ`kuKC(LN?p~p${fmG)3wSxO5G=Fm4$vCRmb0acoUC-oXKj4-DVjVFRq`v zaMI|tam#Adv@4}6B@L;F$)H6muhF_W84Hl4$eFA>eAw3WvNnKoc$p=dh}?yM*l8DvIc`hMh{>h7?O)T*bq&OC1wr+;&5Hb zvi#Jwk$Jlf~P56HTr{i`I6RuB9)aGLQ4KW#YII|q(f1V?|&c%*sjCafk&&+0no z7H>xWxlWV&pCKL{mQ|%@Szb=v(r?=d?LP~F(cfOen(K5H&yy56V{ij!b7_Pvt!2X4 zZ7vg_A~e!{lX<}R|F%rxumh*c!Lz!q>r<16j|wX6JP;OBi%(enI?+lR$V=I zrqPTgqoyWan_-jx)%4L)Y%~7Gg`0;q&z9<<`LXFq@#-ZEfG?K*=3XEq5rs)|@ns~d z7=>qB(4V+YrmXp&S8%QZeY%KONs+rtx*~L`X(spu9PE?DI=!(TIJ!YD3_$-GQp$&& z3l8WdN8g{Lo6I$bFCSpVDoS&Rc5{)r8I6&uAz+8OwFWX@uJeU?7Ou*f8f@e{2Q!{f zbgg0b3vn~jPj|a|7TIRsr4_Q9GX`KbY1RRPYFu8{iTiC8eF1^iGX5NkSgGb3?_>IA z)AG0c@yB&22gV$;6ct@;o)Qlqfp5|RHD!dB%$8qy_N8fIfN^Us-R7H^-+>suFse|% ztp2)P!W&Rj{DxhAd*lYSUO5!z6n5ZRJ$&M5FuB37!;n!#6HwrUdw^e~1zw_w$IkI4 zLj|T2as0b*A;g5j{lE@Y==rU|U*oq8uvKQfg9U}>H&>0Kw=6afWqQYE@Zj5D7xP2T zsiD`*-V5?Zr89Rf&A_g9l`&h=#XqyTJn-qw?&d!eLLZ*hGL*bzSNrPGF&9P${0jWS z9(2}cnR*5haZcd>F5v&}*&MDmdJcc1BBt-yH>AYFHnnNnuuaQka@gJu3dh+4^?-Nc zK^XJD^j+mSSxTVqs!z+f`ewl0bIRJ#k$bvfhlJj3HhY(jv-f4Qfs~-#J>HXWkfEZyla^JFpqeJ>?QzE1|qcTEh&1*%~4O z(Zz7c`gE~T89ycIx`<^~&&)cHr&&77UGif<*D4iUF#Sgytz6Rbj}F^(Jsh$wT^lWC zX|ZsL=VMmS%tF^#gkCz1d%_aer#|r#cj;ae+9loA7$5hs}9vV+LGZMbR(eW|HAVbsrcOOn(y}LYn`|kAePp7ZmoPPA)c-P(; zoh2((=H&GK#m7>q#C;1Bf8!|;*<&X zwy(+EiJ)x@mGbj4D&RnqOe21bNrfB9H{#RbZnXvV6iuh=+cn%vN(W7FBww%R^LVBF zOepAUkK97V={#GnrtydQJdX=GND=;tYk;<`;;64?P;@y~hgP=+eKrI7Y-ZAD7F8q} z&w?h~zl&GXn5&@*>lNHP!8T&z=0r5@r*A-m3XaNr^ed^67!x*X*LJLxcO3kG>-GB4y;??Dw)AN&$ zZ-2h{0LNpj&T;-xKB+Oa<^09v4+mELw7au?bWmvAod#F ztzvND`98ic%KK3U5?{rilWd)rPH=$;RK zIA7nQe?@c9tN1#}i+J_399rcJQNtA1hjEP9!Vdsc(~|8M7AFFfEeWj`loZxM1~FG_ zCtbevMnx6s=y)`SXy&>%9>>le8rSWLrBA6cSO8en_wU}`s#3~eBRGz`XF*+ZFiOK# z3tJvKurlm*+idDu5UEntbB3a#5ohv>`yD|5?Uhy>=Uqd6Slysb$*Nq-AOlRN8uBa> zPjY$Ez{?zTbb(o|p{?u`q^V}v9fET3;sA`zBQFMBcd`g!CX%D_&vk@b(4Q z9L0NudCOCXrGBR_?DBz!x-zg>+EJ0wG|0w0567F#aGH#Zv!X<_J;gkxtO{h5bpuR{;Jb@KPRwxk-X?a1fYT+^3V|c%x1Z0FP}9EO5CT zx-(i`qu(E;3ttg%Uo7GV>Q=7SV58Uoh&S${RdgGJX;@vu}qC68JeK|wdHQYyAG8Sd^ zq2fYMmsx7v2U_(YQRh$rBg3PqDNAa31f-9PiQ~9%7BTUu@IBsc-Nev)!2O@$Xi?QC zi)QF(iD#gfXF|b@7S&103TcTnL=n;s`Gr}Z;}y!Cnw@>Wz3(?^Vl-bTJwz#XVhjQ^ zw=~(8GU$@VJHNGZyjj(a@@uU+N$|fY_UNRL? zNw&KL(E8D!RG}G1oOI?Ecocu*(o|4a#$AlP!519tx1go}8bz#}$&bZM=_({}Z9Zj% zoFfCACvHJFmgMiVS?oCQi=XBo=1%uZ{-q5N@DpYlrGG3M(R3Q$!Og{i+4!=E(}vLK zZ$t{qT=qu33M}*qeDj=CBVCZ)r)k!jFWJ4HepSoeE11Eg& z0;<_Q;&*B$sna>KgL^FQDg(A&OL9#Bo;{`Tw#Z!hCiiv#9(?=fJnokkeF%rq{N3hL7u%D9<62^EX z?|8TC7Ao**>xcN(0s~H|?s1)#3)ydL6Eq4gDE!Z#^>$C6c)QoE@<_j>L#umv^YQ-m z<(CVR`-vx`ekJKixW%RnsMZCO&SU=(^hX_}X zSA3fYmd|FB%DM{d5P=ZTeJ66I`!R-W5m`G?Nc4iFIB>nqjjgv*3b6~#^}7UURJAe0 zC^fT7uS_ad#yEe<5Doo4tjJRue}>ue^tv1DQGwSkqTk`!^dwsO=TpNr0rj z2+mKdl1V;&Nr@CQa2m_`I&T4(AoKhqKvO->Xp(uGM>Jt=~fhLED@;?)5M) zKVtxc<-lmRL>Ey21Al zoD;ny9|UuS&J+VcB`tW8B#4>>4DBkp;_OKY0y|RVP=9b>oC>b?>CpCeFHea2bpRWJi~vOTZglI1-~g$ zX?njULPN@gvmSt&Jm^HA_;{3uTo%ux2$X4_J45HAH#H|J39_D9M4UoQw0HcwmMmmD0bk`R2oUQ!%r!%x!Xu zzU9MabO*7W(5=&t7-qqi6o#pxT8wcXKv)s&i<8%ISza=7iFQ+@w8^OoO_cHWkST@j zD>{en@sz3%>3!D7)&($cAit5{#nWV-#50iptE4ZJbbVh*&DUv`+o{NklOK%h78Bb1lBAu0PfypkO2Wbr@!&Uvh^BxFeQgzN zQIZ7n;{lI%B@lEA!6z1Pa6&2)LX<4P{zH&#HcC4u+LtI{ATi2*!g}(+gd@pIC_eUD#zXF!OOJ&Yz{_@8d=CrQpZflNj+%j z;Q8`4uu}nsl+AMGccrB{qUEKAqMFt|Rr(qX4LHWd`n{G+tn)I6kOJV!9?DMk-cDdNYgjJ3C^ z>3G2aSyhD;HT(uBj7>YT7{A%rt>V;4d^j~X{4r|GPb&AF?CRUAzh@vPzE7jL4$ z8cok=(reO2l;0qcHjD2uJNBAnzhMirM{v;PaZw#&d1CTC%OM3}?{AX3Y7N;|84&z1 zGHFeq%A?uaw5X;3+5@G1T*6j?nxg5JKPZlkltIyIk%+m`aCk^OrJeh#FyzBFT1I>z zLflz%S|;@>yY_BHcdhcvo@U)iS_MSqps5ylQ=--lZ9f4@SQWySj|I@{Z3l>eD z8y_DBJ;x6Y2*uyN0Y?DN(9e$*WO zXI+%fzV~X6z8XyW2Oe~lsfU3NK5yE80|Mjsq!-L9%Q&>i3rUAcvnDGqCi-H2>3ys? zDXemtZvS_~k;-Klyg=RS@3pO-K~XfyKCWtjy1qhB0)H2{THDSCzYM`|(y}o8-c>;_ zx%T{aQK^Dk5051-xl=jIoo8d6N|~fUOU~`o#bv$p3oYydzBS0P4Nqj|GZLMF^Ve`p z!ivMPrCYiZ4WAI83y&Vm@^Yb4K0dsqdVu8y?D6%Yb#M!Pd=gqv4uke%M{VaxuO=09 zRo49Z&;Qr|0Cqr)l`3TZAOEMBX&LW8_W%7qA^X?2Kli(r)k4tS#RqKXfBvt>3X0bL zC$?5H27`?M^`BQwE|U#j;H{@DP)c`E)p_|0X`W>1=XfR5G#f=`XbH_?5n?yqrlu-T zVygl@?xVvrJ+g4h>Owi*uw6jZXrox@Rp;a==>2xM37cUPZe_5UinKVD9j?CGI}hm> z0QTwPOTS<+ruzUH-Q0_TE?2iawjOmEKNeY{?BwZyopbX(Znf$Fj35MV!sTQH1& z#JjLBS*o@Dz^(@SeU;8W#&>aqkvDc3*gc9`HNJY%XZY$-5c$27|MqHtX)x0S=#-XV z3FvJ!xmZeq&V~&YUIs{wwxV6Ks?b(hT+8xP$Oe-9EJ>4m0SU$cTxBO}WItz|^@xS0 zgq5+g8h@8Nho_AOh5Zbov<~(r@!r@C9%>P3dvZ(^{Eyq{-jcSWo~9L#1tmQ^28$pB z!`LRn&3KK1`X+;`RUF;$;3uZ{uXrZ~UsqF9!rum|X}6*uSF(w1h02%CF&ShLK5K7o*)>Rs}+QgPmv&uNwE43-lwflXt=}IoxPMhiL_>dkASJ$yYeU`9<#eX9g1K;Bm0JVXuZfEzb zO#&J)k8dNjKXz>e%bJ0cC#7R#?`1b@se6A=C#dI`F9*vfUsHh4n5p=gyJnybBH}H@ zQ_W`Qo9h(TKX~E%v|lEVoB*Yr3M!?=WB9eDrS!1Qor+S)D>Y9lYKDs_|L`UKd6nJ8 ztKva#(sE52E7OwP9&P{|w-)LNE+3<#@S)9@#nqfXX6~1!k zZnh6}9S1!6x{&VDYE(l$pmvf{2{s&I*#6XPSDRJy;Rqb@b2Y~C1O~i+nFys9b~mFrp;I!5 zELSjyN=Q~&7UgPREKKv66)V&W&q5;&TQv!0Ld|@dDb!J_gM7C ztgaa7^Wy>JStF}wtYFhichm8oJdGVB0}>mEQ@OUw1++7-Nka~ zJf#!>Ze^6c6u8#M9nOF9{cI$2Xw*8H$Agofal4(!^W&99`x>|Gc0)?tIY zOOf}@GM*P7KF6FVXVR#(bvfzPB-?Bp^tux!{y-!QZ7)#kiQd>&qkP}8mUd&&e3R6h zQPCVCwQ0r1rJ&fj!;%a=mGpYSQJ*ol-|hK<Zcft&BX=SD4Td^q&m#B-At)+ZEtrAv=RLq9ki`C&8!-{YeojD}co)Cs#>*YDBD zXiGCL+7gh6`$k#*Bd5jZRE$>`@GNx2+(d$Z6hJ(`<342Yxr&@1z({|`eh|7csoUmB zhg4P%4n-lS-y!AHemSwBVxX~Y ze^?Q*&Jk+5uLhvm?WQaq7oImE086qQM=+t3TS_H!w>xxmmW|U1k$C{g4lO*Ex5Q0= z4*-V+pa?zc_+bZs_`UF8;1A&e4}GO9gG$-d8-B4BeU5s6$>TD5xQxMV*(XP zhz$^u(Qi9`JLsr%z>5u}IH{6aEOjt}$Z_1Il9P;3eJ0TpRBDj)O3 zK-lY;PdcgFT-y@iPdhV<0+$Yxb6Q(Rc$H>$rhebm9R2*!Rr6**+;$7lt5Rlq$FcS( zRH$tMFVmvsgMmZjIDT-*nCl+}PCSk#WI&=;OF6O{wz+M5G%CW#%f?V-a$Jm}u-F2N zf60o$YERqFJC40X?h=eW69 zcgFf+d#T+4H9IeesHurHLA@!S;A6y_<_cO7Gqq4=TMiUui-VMpTF;9JMs-7*C-Z(b zuQ)K)ii_m-Hl8KiEkPuiW=4b{Fw%}n?^I-w@P~rw+yx&Ag?uC=Tk>~&52zbiJPQg? zzLjr*#A1!qM#SW<`IO^OG{A+rV0XLSiWt}5_;WCsKfHb@iyjP@EXdGgZCGn%T0D32 zA&aDbK}~=m!J|W7p|ENjq{Dnb#Ld7^<+P$@n((diRDFQdcsmCI%IICkLTOf;Usj)VJYc^>Khf#uAABu?|^a_tDj`Ac*U&o*Fcou%s2Y6WG zBdhW0B8~$dTArAE=_d76xMYo2Qew8k zz*pD1mTUFQml;sNKL(0IEY*#WnQ8NScOH|7Vi^1qTum!{imJpToAGGcU{=4DOd)X^ zgc&X2nm)1NnARk`B4FUg(#)i~in0>}-e7*rD{N^UhF5zvFxKq44ms`0HnJIYw{$JI zV{-B{G5PGN8I=e0+{skxJvD*Kv)>rDV7SS_*YdV29m>_JE54`}w-y|1g5K3GdiJ-T zcg;Ki4hBE5yoR;&`%VOo>y|hBzNIr*rGLvIn;m`EzFRzd-(^6u8V^HO)%{`I-@D-z zW>6x-V(r|)^#7(}#E+B7IG&)3gh;xz-D!cI-z`A^bwG;0*9x4nL_oiA*C>VQ8buIr z#W|w5AsqHUz52`LzrT9->Gaa?zkYjhjub=B%IE}` z(E?`d-6}4M2Ug2XwL@!y=b2`cm^W_%LHGXizUjGc$pt_}$k6YPn(b!TY!a`~%rn1F zY;P|*5GTYe27z8xOCT=Z$~TT{P-Bw3iZ&arm$%uBCxpKy<+HW4FBM%8ff7<=NK6eR zqp^_=s}Mnp+yPI;=RXy`dH_-}YY*aK*}K&s_B^5-e5qW}?Rl0Kky(QlL^>b@rU(xp z0DqWS$_ylcW4C?x*#ORIMyKioTvdF67d1Y+6%7pUNbm+_?g)5vK@8hH#>Q$(gTtUn zld5khG-*z_YVwD<`{YIko^+k~>CU8vNc^8W3v%>^xA262tNL_ z&m_<}oQ^=GAh|V?6Y%xB1r+d(=ekH{d@Wf<1p&u)QSFcPjFaio8O?{okYKGD&I zLpGOcA^VNDc_ZOF#W?K#E&3dtPglvE@aH7nx)kw%m7CJ+=eR95 zSV$&+CG2&9i`02O7ioofCjOjd+B#0j1_d|Ch^JW!K=EL>wv;?6E8Mu?xAAx;Qttt< zS_Te}x66tjj~X8fv7uJV2V8G%j;{C2Qn-a%tZR9z(+!A&zYEOd66419#F4EUSLe)j;wdC6ur%DJmx|lUEeJUGP=$<~n0QSB{2uTDTr)*mzr~usz)Vp-JQRhtb5_8^ zv6LIjO@J_id#`v6Ne~wl{e#^Un z%te&Wmhq>HvqR8GlrpzhMX^e*cw~1zPYwRcJhdOG%E;@s4H-O50_1i6AIN~Xv2Zc@ z4Ust1_`I#qC4}r71FxC8UJ)5;RQXydA0bk;(Of{z(WoykT(Xy|kY`dT2I*1XzSnH5 z_%9%2MRo&X1~sm;LRPc7=F7P2N~qpzbuNaCb+MdfAmp@HHDT_dtF>tzYL0fnLCV_Z zNjhu9+%KCk#~7maJv8|n!6Nz}tDI0*_>n4)-M}xY_PoM)|Jo%vC#h0WT)%Z?^#z2d0;uJ> z&%)~`e8vz`=QD6O*22pZo7|0#OMZDa^|4dMnjOddQ-dub&8~YJjOQwQ^_iD2%^&lg zqfF3Vc$>d)am)?!R6oNu`F$5~*Is|-cwV};HHSfEU0v>QK4P^S#;e(I1HD&((dV(C zO(T!_fw!A7RZrGd1gP5{CZvi*wEha0{vrg>&<|)rlrCcOj9rF7TGH!A(?fx8bd|da z@tO?`5syyL1vip2;i|TuylQ#Ezy+IA32&N!;@ zZ^8gg7s?@_cWNC`laUj4kbl(u8}N^6!k7p)lJLSLc}OC%%F?bT!c0$h@|lDwq6kSZ z_)1k)Q?Z?ytfnMCO{c2|z>ONC8y~d(xMJH?Qk*TLYqF*59EshU;-FZ}mS&8ATvi^wAU z4g?tsW30qEwt^imL819sLX9O#GL{gA{WiKzrlz|@NLA`!pmOS3Fif)aC$xSdPu&=x z6=p;gH(7}F4SLPSI=xA=FKNR~(iB2I0udTw)!jaDB?fTrqj2YB#26I@d^MOrYjHqa zJ+O0WLCg47!Wa7iSlIzsMTB_%DVoKvA8g!~+d^Qu*i<$6UxAh=BRHXfcEn_C5ot#! zysgDmE|N8wngV6mSVdGMB!dMgsWmjEKTG1}EU(+*YT<0YVqD8?<>Wgj$g3r!fhb%g z`ej~IP>LRQ7L=2&FcfOa7>BD%>ilJk%w7DEfmr#%ygfC{)UAqf-jM3ixmIi^$pEc8 z7j0&%^7^1BU*UU}!^~-qD|QSxZgg+Fi!B^KK0XxN5TeBGxqjbyWChS&YbLID$@Q*e3bYsqM1?JCt|dAmQ>;O?WLi@I8+Ew#gF z4FVx>*JkzSmge6XSrQS9B=&6!o0>P(9i{_PJWACh=8laBt)N1|na+h|I!A)(oNVFj zkngFKY^ml_R+(1Qr^GAj#1^z4o@Vw202ximu0h?om4j$^c^Sl7o6jl+Z)z;mr!;|j zKSu?4;u4e(Y|HAn3f)v$NEDZ7gF&_O(-I>?_*gqeF(Yf338{lfqDPwV9;t#*T@z1@ zHwQ&~x)YW=_?afg1&0TRM;LcZn_s!HJdotO0X5VlBEy-uDxri`pi4#on9xQEBW{6I zcI#<{HWB6R5r{u$GQDo!|4oyTtMU8H$9&(;9*uKkJqts8;2KVDcfX3ukKmf{MDPH9 zd7NCsi=etJ8OF;qh|UQAP%}D~j+#Yl@8_rzy0(r2h)M~DTjhg$JNVm7oq)p*^{*Di&z5S;JP6_(+qc>*fEN0f(0uXMH3^GpQ-qwN0Ta-o zNbqW=Y}}0U3)m2}8RdMo_*2Ifz)!9Eho6R;U2{Tb?C%#hbHUn!#c(QR^9#^E)<@BJ zI$lgBY&Ni+#_hh~st05k9Q+QE_~3Rc`*%;sH%oW6!t0f9fS=Y}aQWdXk5`|;OfnV* zmE{~H_N1YBn{o$HsXN1SeP2pJ1!BT7!?L2ovDJRY+i)}b4HUMcX%Vk5V$)uG3r_@N zO*8IQJ7=Dk|4XplN+|#*{-svrW~20xalM}4}Ck+5y%sP)+-qY}YYu&3(`iv4PL<_u@3R8doga~**95vK^f zeU7>(i)4wWsfBPhZVW>H5W^65tg^<|-28c5TqL(~wl3Tm_}bUBId>RQ2IOG54`}W0 zXX!1^U^9EIc!6O5F3Ss1*KHF{GE5c1plH>hpv)c%SFoUvQ5DTUfJW-Wi< zdGRnBkOFK{$Uqn0Cg3-xJ~|7~w^OOWvDqY>O$4GAV!4c|YIR5Z*Q03vI;_hBG0Ux;Sp0 zeR_BH_T4-DUb1oX=hOFZ-oF3W=EQWf!&PjXGDQ#CB#1y0T%4go1%K7JUFSvPDsDs# zRabe|1=3e=$o`*oypEL)aJDX{*=;NWwbOVH&3xv{^_wl+QDpWV*W6|?)dN-5I)!9? zWa-&@IZu}030}~^u%bpHmMRuNp&99~jh{WJ$HgQ+td8~W5H3ukS zVn@6b1L_rByg_x=%-2(3E;mizUNTR(Embv@>Dt!S2iKIC9yyXUS}q^T_FA>O*9`k^ zu$7cEf^22cn6@E^4t8E>__?HPFQP-DZ_U^m&#ui+7^qxwJ%Z5M8J!NB5k3v_*3h_~vnD@{uFyQ=Lsf_{@~zY*$)i++Xo zehEXv+$)B?RcGQW^Ua4IEX61`t{Ay5+?0rITA6|3$>^ek@){JPan@|ndRSjTk0J-EI-5v)dFQnEJnBU*D z9bX5%c|I?)_P6c8ZByilE|V+H$Og8;EzscmQ4XqL#7%UGSv+5IXG|(7Nh?WT;s5X! zi_#)*g7mS>yD%FIJIH4+8w(ly9!Y=Bcy&ypGS9?OH?wNvtWIFRy&Q>*C zVqp{F(VA<{GbVpku9BC#k(W+co6Z1@7OYLz>~LTbuiR)6Zz}VIoD(zlDux8Lxbdl2 zIrrN#{v0pE8Re|1a80M+z6J!&Ax4^_{3ZE1De}#xaOxrXDIUqinS4<{qVV}4%> za#t%AI4-|d(c$8BW&}dQxoWG?yjb1hR?YPHe)Ks?mf$m*wZ%yQj<*pd-ljKf2I zkBc`d$C%eGA&67ytd=#i$7P&`f944coNF zaY(kGq<8CrS?d-*y;w0(RVyxbLYWiOY(I_fi^~KY!DV6_Bqxf zpn1PF5Hlr7H=FJrV=KoA;1B2%8FDpip$Z{{$Wjz5=iovoxPmhl_5ITQe6dQ>o7d~P znyWE8a7$-af4cbg%OY9EuG=1(qb&iJI1WHbJ3;KiOL1gE4Irbik5C(47PM%@0I(r~ zLMqhoqEi5^xjY!`(8PW|ue#{zaHQ%0Ms}Uk)P7^Zt8@x{pC=Z9Z$D=CARY9DW`T4c zU{J&w_(`0rc&`(yNl)yWLG`=f6V z!6W(tu;ynGx(E82+&xhTi|9(69;%~qY@#FVa)o<~a_aVJg$xOMJ}na=VXw2D&~E#M z)RCs`zMDES$UuucGN`6yE!8wNQm?-*WCZouZenU+vPyT*P78~6T0BBKJwhtAUqBPF zmykF%oka11u&S3z`#liDyHE8(HXCHd>O?pYEYhkI5bF0HqsO|3Xjtm{Ju97*2DM>+ z@Ash6mQPS=0yV2tnlUsMnH!|cT$3{MU8Kz1q9Eoqq|7amjdD`P zsKIUtr)vd@xN~YkfDp#f?fvQLo69$EPc9ti&T-szl{&w(N%Fg=;c-_XzVAqQM~%_! zqO#Y(?G+nQDHkKDI8vWH;(gowx zpdbZRm8FFgQyVE-Q#y5=l)KV9j|;OWS)Wd6Taj!?H!dEbBkP6=4ya5FPEu~`Z)5Z| zD$gr|b6z4i=N7?PT?g%4jnynsW-JI?=;i{A%#HCvN>!j%SY2Y9b`|C5o;xoSu#4{? zU>8pku)M>6YAW_Ehd5iHYe4>ct$#n8id`!zcAX-Ty8a&8)MCle3I!K-4``XZ47*1! zB4hn$k+F}*quLz<%kMu@;B8uT0?Z#of>hk$w6q-S5Y1dlP7kRMYCPhGQr^4v^F=Zj zYVQ%3I||9URw1d?sfawq;!d-)B`Rr-b%LJfNK`UfbQ2)r;&C!z(KwlqtsyRo^pRAH zL=DL~N4g*mwIB9TY=)*NNT`&z8H!>CT%h$$9+@R)^`JM#)hJanK*Gx3B<2A@bRQ9o zyab$hbAxUU1SSnWX5fJ}-r>Ty3{Be*##)Y0A8x@uU)y6TBP`A{ZPX zTIqlsxe<~~%nBa&dOi31%-BmjtrIZ4eW=_%803|NvLU+-yLP2wj((HX*dUSuDnxZ( z5DY^-W>XZhfYKPKVLajRe%zjzK|N7N?CDxnNBz2u9NMrYdBM9XAIv`mIX%VbEjOol|u?2u?nt)h(akPcw?8@nvuZ1&9Wlsq#qL}Jh{sA6CU zkef})LwXg1mFJOYSL}q9>D_h3Bde`+fHh4qvz-yD{&rE)(wBu3OTQ;dnqK$cF%H^q z8u&kP95e{7XmW0M`F)MGC#uMPi0-((jb$(cJ3+i;9ddY>8bKO%#jz1Xtc=eH!;EN~ znX#pWC||}_%ZPARouIqwOvhG>RBW~BIH`%Pw!+wIB9F&bi(U|04f`@gqN|@TaH?6#e%pqj7CA+38O*Iat}gedj-OC(FIgcr|{ImR`r_`n^fEsZ1MEt$M+w?mT!~;en!}W z%r~ztUdeChPq90~7WDM~!{y0`pML&$dVc=)!+Y%O_38P=<@wL2r@SxxG|L=8tEXqL zKE1QkaR6s;-(8%36jlH9>Fn&MSMM)Bynpu}IMR>rPQ|4Ea{316EE_t%`1tDL^k4sj zkKpb5S0DM$i_^bcU|XNw|M~rgU*2OgZ%)tNy}CGk6CTR->OG6TF%%>X-=FZV8?KPFi4pq`{|YvyJ;#mzT8y&^kqpw7|JPUoq5m8p2+74R(M7R} zV?$&S&6e@XbSWe~3<(*9A+_L|8(pEe(F*7s)HrTgm)@~}Ub91b#g6D_7995J4ePY& z1M`pQB@2G|?D_Ny^LzA+b?6BTdWZCaop@)SPw!bbpy$l@JM5}xd8*|2)9>gzFQPTj`Sbf1gYOMbso-PcV%n5ou z`bZ(zfkvx8m#7vrRlL8PE}|s86ogA|P6Jd`?^f|=nF)k>noQ%%TX^-rrcz~(SPkOK`1B$JQQ5?e7U@h@*BDk-O#nspm##&Y&y=pRm-2yTmEx0um*I@ z;{EF^oAL1gavmSEfY1ymh%CE_fN6zXPve^iS;BPeMyw#-YQh-1b)4xq!oGmVieK<+ zI?gBX;d%1Y0}my+#{wF89yBFbwNNJKWuP#x^bbhLhil|KCG4c-u3I@AmFw0CT@4d_ zGs2n|(}lpZY4LmV2g3#%qHY`i5_fQEv=}#8k#^JtwQ5V zqu|GKOl)AQ&$tMT-ZF_TVu^BvE*yu9CR+xY8d%6~J@>YCLHNOFomB$w)Q?+w3k-b= z9xZljZg~7Mwm2j}fMj$Vw%{WLwQ3m9xYa5qRQxU`>~_eKQPR2%ftHH~I=b>LRsk%Q zRq%IRmE2>uTOsy}O<8J^isb@47Fm2p@wqL`jbuQLu31j!(&}ms@$^J{bUmDdIE}6G zodla;)DB%;pvC6Yfai=(xqyyNrTmW0>4H#j9yjIJ%l?;DbT^vrvRP!zJhzdvR;d|@8B0f=loN?-qA`VU@|!K`((|b7 zzty69ZXGa&XM_yMKWf-ofunK@Vv%7>I+#Xa!SXv(r-J1vB);-VGFT z>*E;_8?YXp>qf>gJ9_~<4g9YHHj*1qmwEw=btOd=87LJEnZEOI!2Em>ymPpNBchKT zd6AtFJhM5CQh;$6vONq;HIAuL?bewE<`%QFOQnb6+FwRrALPYpgPE^xsgKsc0I5g+ zsn&twU1Se&Q6T`dSaaCx!*79kAk)3$k?fSMyufn$kF8e4iE|*F1)KEt6 z!c%>k{8!~Pq3Qph&l8Kht)eJqVj6qwKwz+T>S!`r9M*09mmOV|)1>D(t}j;__2z+< zXVqi?>Tdg}KiqYqk!p8mEuWMCf=gCC&5RO)?%P5Bw9e=wN37p60c`hNbHtjteyKDI zz#)O&T43D%Pk42;TGp@!JQjn1FK*fBY8m6Usi2p28@%8E(vCVx-QX5?pLHMtREXoq z9!nRKc~aI6#vV&`zWyUE>I1Y?%W%{MPA|rMjb^q+eC8HL9Gc3cGlrdunhuj50ddgKz*!?xOzxGOu}uW2VToJEDrKG!avf_Lvy#+SvKqJh zD>J3cbbWQH7Qt%E7y({EYJnAZNTz81l}wpEq?b!zBx@Z~zwZV=ToRo>tI2nRA8tSp zD`9zAU*-YJe0A-zRb%uL?+Uldn)wfNRq}1d*urrvr6B8M3Vx6zA^qxda)Mu9)>ec#(YOyMDuHI(TA@A0^7hroTCzQ%4Sovv}*u1vjNP ze^wW0PFF;Dm6UPQ2V7vr)%7{A*)3R~&}7&ix!?;RVXcIOes7o{>pGxG3r%P9p}*N& z4fD+gw0^HQn`C&n*+99?rT~%m(XiNTR`Ba~s63Q#L>L@0jG*o&?1&q@aJ%=P22#o- zy)_Yj8^?6Xku#%9>zZ83TQ0$$h$Q}SD3dV}ZylKnHulEtlzRvATh~?DGE20eis?r9 z1@_^!RJ>R;Rk4^nvNG>L6`dWThXPYT_Orwf19u|bo}pboAUqaoT8w@ z0#{Wzjw@qp^@LQgnn7yb?9A7X_R^dD`OkKnVWauj)_#`ifaad}Fs_Q`oMR$9Otq+h ztIZk>8AN(w9w!NX-rGh*a;X&;9@|gr@8s6BpHKa}mTb-#iP3wdXZnt83FU~=rCoYR zyY#(I=uy8<56zT5?F8`ey;;le!@vKMNr&*oi`i*@aESjiQab^r1U;j^N;{-}JLp;& zkO=<+<^ugMGSSALU|CkL^30FtYwGvtAvid+>jdo2h6QO1cI&^E68;>=ckC}ZQ5pR2 zP_fpOL?Bq}N;t9(<;g1#*#d6wwK1q#owJm#=n@^B#9Z66KyQ~lxB-e`TVhZ=;>Ulu zMz@?w?!PBR_gER_IFj$Ltxfvy zu!72_8Dsar{tmD^B!wi^)26?;Ded?K|N5OH{^O9)Q~+$`LV_zl_raC&$PZBsQl>4Y ztLZ4P)6g3_Snr#O;KqA&Xr~D$-6Ovrwh8YZhLu3^L{>p1qeRJZ(}xe;<<&aPqQIVsaR91go=I6NH8H_YAH zXgid@`y)T>TO;X^;joXK*i^IY9CyA!gWb8uI(}>ZFCE_)4gG_gf=IJc3DN~HQN560 zNuhMe(~)1w0q+CHyMJVCV1gUdTt&_-T`{#71GNxCmp5FG5vT?v>fkWT6v1ZWmM}t< zIbOX4Jz6VpGXeTEpyQ>n=JD=9xLJ?WV>QExfp(rZ_+5vq@fk)}zvpUk{-8rRQ_@I* z1NES@Ya!vpBHzq4kU(ck4c z_(EZjn}W$_=UMPY0~l_##iw4!3^=Km;Ioq#iSTQbG;Dc(+mJ9Lw<{Z)!e9`-fzzh3 z=cNPIhxE-@Iu=Tew z*MG56(X&-)z&i9d?-TORyit;IDjCwSNiY$;`t33H%5mV&TcnBQ+os{KXT6eAAXXbD!eDG7TJlgn{jo}3riDxL|A_Y`@5FeTXA zQ0S|h3a);eS!b`f92HAFEwR*71zaNOhw>e>`;w932e?N@i;%zihpavFLxT-4dfugI zrI~MQm1w@Id2>>rBMZv!QlmQAZda#^rb+nB2O0;|FqJB=sgMB)#)o}tn0t)fJ5K+IqsBpp|2^{gU%xF9U_s91bz4a8k&+H@5hG*l9J5*-5|+4C zmJ6F5=90N^d^AIyZ)J~J;$~@yiC_)684s={By0$-%?5Tr<~Y)KH_UUhiH!44H3Jux zD6PoFl_D1lR0jtqPeMW9_LxP2WedJ-M8&UeB(_UrZjPw5IU>C|sKxS+lr+KgHUqu4 zWENFFz~2l580lI|gIq#$3aNZOV}g-Kbph00*WQ&x0annDVB#8Ccc-vUOqiY*h46Cv zJa$3IGKi!WQzW&RB2$YglE-=?l$Rn?d5NnoB~GL?mN+!Wk-Q)U?1ms(U26h^gzLJ9q;g8s~0prypOj4muj z^gLtDyXYosh?ItlQPUyZ&oqL#9^e~&Y?v*;FgmntNqu2C`ex^6{fnL%t^o*X+3wl3LhZ6eOmmBgzZOD`* zo~swV)kE_|WeG>`nX;r?vApGi=*W=CWMCg`n!*LW12_nx{n>4FPp5D?;Bhg7UyJB- zOaVW?K>KvfOF_6PjerUe&2Z@@`>m6yZ8k?2_EJR@!YusqkkYRpG*eR zEG?3B9XAS~jXQz!0MS@(vsujifIs#c@s?X=Hj@;UMHHn_jdSD2OvT(J*EdnIT&#MguV=_*W<1-R(k372H&g9ctiM^Ko%PJHSQga_D|BK}JAZrG6YmmNn+ls&N%fZ+48w zfH!p?Sl(KZ;THtQZ0J6)FRcfHbVZcLzp0-Swx;eGYs1TPf$g7pY}$ID55r4->0Y+j z!$9EodVB^x8d|M~0U4aJy!C~iuzMZgZZUjNZFq|o486q`3TxAaS&%KB>Q!}n z=CQ>Khm5!w3@-z?p(k9}RXSZ8qQIIf-S4=ZVebL((0*ry!Lz142*S1^R}cfbV7 zX!pLRuY1`SXFgQUeS+3oRhht3^5C*9i?yBrQXgrEwMqyiGd0Gj0{ zA&?ByQQAtpUf65734iZv2YLB08)dEB3wj4(&^u_kc`E}76pnNBevGO$xAOXXeiVg@ zU42?Mq|a?bdSPgvr1N={7uwK1N$1iQf5{+}NkD;WT7YH!n)!6j4toK;Wxb<7o5J6j zX70!8E#=|Iq0{dLhaie|@rM(GEDk>L1xJR%plc|&T}vVacc7tDs9e>WiobA6g8x*N zX;COML&Xsze=4E|o_&Tgq^X|!#nSz?)PkWm^^qDxQbj2k7gXsf>h^3!*la!ry#$Mj z(gooNHuXitrEVmNYh6uOTzuMnjlmeFej`1T)W`$`z|^o;xo=xH&#|~ zct}*O*+W_yxt#)Mu>wz|*X2u;o7$XL&wCrw9eSOGTIX1KK9?5e7m=@RW_v(Vr%%G{z7DL@HSL=i+S zpUz0Q(9rq(D0ECER)xhHg%$n+jICyGEE2k|=|lm(09{AKS=K6$J?MLGaeUk*v_MbQ zZh`axp%~Or=s6Z-vtZQ!qPKCEVx5E?-*&?>$bFrKOG@rw82a5Vgzkc!HZI_%I>Z(R1$u?Ca*kBaVcX6*&^d>7tz{6a2vcdB28W0Ak~40z z)eZdy&EZ095>KtPuZ_*T9uJ0`+Q%?q9?Q=JfQ^ zU6ef3(3M0oxs0$B=m=Kgi@Oqt?GJ}5jumvJ@Oq_ieP!yB3TI-XD#-YcnfMsFiDu=< zN-(IFC_v@kHmT`IHW|7pdi>&_Em06i!Ay-fADVs7Lpi+6e)>DW#xh-IY!(De)$lAI;V868fHvL38nd z`iHbl59t9tqJ8SOK{wI|-N%4-sNbOh^}E!kes5CM(tC#Xo#a|B20pSr4ZbJbHlT|_G zd<5j%6au8LLm{{0{4D*T?g;5A*1a71eJzdsOvEc`@VV8Z4<4J3ukpcm2`}SAcsm77 zByQeLukZI5V-Mup$8jXdGVbH%fqoqO6ZW8d;>i5m6~E|58UW^BvIow~gRuo#up21? zkTW0=z$oJvoF#Bs?Tf*H*K$sUJ_wTZ;rRHFkbmj;#zS$MtybU-o;yzF5#%c`MCki) z52G?X=-2Ezy-Bk#X+uVc$9PGo&RyHUWs7y`Yj)^CGccB8))gua5kKFE_{&}^_kypF zWnTGh%g>7j?CENEoaqEd=WC^mAffHc(%`f5VdS?%Kj0AOl?R9^LHK>BAeZQY0>A+J zBIUc`);s8QyQ-CPBVye!vysO|9V~2ALG~x0g5whkFc3|Hs=@fBs9M6+4hLRG0uQd+ z=K`-XPGHSGJb#EE#{vK3JR|yX+~ME+y;eJgZgmP>K85c0tbch5f}_lbE7GzYf&aUM zzQ@Pi3sDy+Ffiu3CL*4450#TfbH5*cw>fbBO>Iw{MjePr_W30H6~8Ed-|G`fm8*>oZi!GLg?of zyQkM4yQgwgEp|`T2T^Ml>4&y}%K?YW0l)>^=IX_-EI44pJ!=nMI&Tbi z>9xrr{Ve&N50c+`NrS;o8pIF8AOc)X(018uKs&Ke^W*uQ5Qz)m-H>lcJRLZfz=(!F zl2Sadso2i*!KH|0WDfbx12pZ^jv&-PhJoW~hjQRuYmH!ZClGW+4y8>|H$ymp!$tyV zQ%SBQnI+phFx%^dC29{P;tjB1Ht=s-X;zGeU*07sy%2%GE|2eu2eQXpPFVaEQ>p?T zuDv8i$q$memY7o~m}t6$l090t_B{n8asT;v0UFmGOzQLSUfy~);^z$~ukTfR#$|OY zZm28sIJ$vfSEVaR(UEnV^FYx_-51iy$g&N32cFyUod-g3xq7fzKre76uD>G_nJrz9 zKS+3Hm*N8>IP4F3+nY_NJroV81p`6YZInKUMQUU#EhNhyZm+UsUQ0o9UW){QxOMzP zK6#!$6yqAGgShiTf-4`tAM>_6Z!%#A&I6xX2L(=BvoHT>KLm40WxHln&<$@P$H7lX7{=)3AKd>rd);N~;BwRi32RjX0gP zvUv+Hk=>VvU^?&E#7n)2`Lw@(BipJZJN7b;N^!jVRBPu5MIAVN^jKv{KG>-otQsn= zkkLqK%&McEgO-Q+W5ZPhO7*G@6nzs2>M%gkraxq#9Vh4=4%rR#`Fl`>D>tTRe^a(7 zGG!ypiWP!3VqmpMZ2v>f)mJ>$YtU^wuY@n;H|&&tVz1~|_O?8vub%7jVZHG_fm+S+ z@f)&hRBycR9T%P=Z{QSpLpgLj_NII;%ZyV+C$YD9Sie#%<)E)|t`j(zAtjw9QVNY= zyHMmiw7IsC;8OTK=anMA#j_#^__M(VH^7*+dz5zV)rv#Gt z-bN?@H#jbQsDfu02&SP}b$J3POf)q5{syS{3_MgL`sYN%S_FDr;cXj99gVlN7K;Qg zH0b_*Sj0R04OoOD;jJ8VHvf03y~zhnAULN%Px1k7^m_?jS!XQ}0E#Z}xdTXed-0Uk zJvkN%t-nzZZ+p&wSV76<$h~hV?O35X+qx&ANNU|vD5}h~ji(@er*vsKUH6XN(sOpz zk^`o?F!IEV$09!e%$MKo_zH-ecjI%eI(I)H14Y*GuGM`>Eb&Rd3QW8xGZLniB!U7* zDef6Pguq||{R+uLtBTmb3EM6Ko8+N!Xo&Y^aH!$nRM>nkWM&|nuNxe7kNO9}5%BsD z7^G&P^16A>P{rFVI0`>VOKV9?b=u(v*6NfJ{ZPc%5r<1B2xsv;S}%)GN|U$0EBDP6 z+h?;m+bfx^@ktCjZH33f;9#@qBIk-Y&IP*O6$F_ekgTo13v9V7< zK?kM)nmaIX7y#{bX!nTrd-Ujl`T;c8p+WC}b`E>A=XdBqALbhLsNd@x(4gHtqMi0Z z2mFp5(7xa8(L<=>2f^VHOzyBpgKqEOfKMzdP0XBzIdnea0RMIHUl;%N@LwPQ9pJx1 z{C5QZ`d!-ZPIkv`Q#MR|Z`2qvu{D3yf_=aVYtsv41GVWnYtwhEO;1^yzG7|qmbK{{ z)~28M_W#P-^tGkS3pTGGDk;D4;(rjKT+dj0a5iLqZ*b;$l;*tA_{lXU1KO&(o6H@xM1wsP)3(M&r_)myb9J-&_ivGef3dZJV z?1Emg89iku43_>59@*E-eG3{u?mKWk((*CpPwY5{y_e<15d7b9{VCAOaMdlL@;46M@YG1j^i8qG9!|h{GhR`-3;md_d+Phm+n&<|Frw z!{#lYzVXvtpZo%;0dN|c*fqOc>V{e@62|Gt1 zyh9*dwPq?fJk0eCgj^b5d2c2#4lLO3LP;Vw#yM?ocicj7mH5w(I~s(|G>+lLCNJ(L z^}}Xftm5bvIJ8aL4x3HdZ28TwIZu{xBVMht6{G}BT~MZVnqd>^ewET~hRr0+*YkNY zP2#j@+{U*Vbkl70nql*5J)g%bUA&LQK~*d&lB;Fh_#Cf5W2`BxXnMhKxhEkMxe>E_ z^}JY(+&6HWE?IB{HZ;9How2FsdrP{27?f*>K{;o^4>J#9Rr)=8$NWCMW(V{NOMiyX z8|EKCxXMF%$;Q&(tNhOw{{`Z|j`*)D{_BbV+7tRk*OoP8$sW=GKm`CD0F(fy1vok2 zgBmRS169}wJ*$qQ{2#P@FrgXhn#mj=hVnqLi#CB7plWX?t%==IGv?<3c`Ik`iqZE(`R9!V5UTQECVXU z%lI~z!4%NXHfNBg%D?|*&fCO@PMB$h{{;G2Ih{9qM=#oj(GLueJC!f2Fq+z@DVQ0I z&d2d2JO>#JH`zKMla~a%#PF2#IYBN$WT@m(tdAMM=B`-T+|SVd-vAk4qu zdy|(S>KAly*V2Wl{^_x(b%&lW9&6SrPfC$CVU#f3XdL`dO!yy&0%b)*v^*(6RNoE6 z?4>d4hR_JfiuMrC2o>HM_@SkMY|xj8mrHX44{yO4|4I;830xyX2teq0Bp)Xewqh$U z8YeA(G92N&wzvp`{?H5Y~pz|BV=pEbTW-v zxOvEI06u(T9RLA=A_m5bEQ}(v`XXylM1)9?1?*<8CK$m*h75@9XaU;4k91oUTef5W z4x>LbmU?92PS`fF02l~6v9|`_+6Km$o&KcbiSt&oa>Unez3MMt#1dM@1mrQ3zETt)uGdef1f)tcc8U2d2wWm0_b{NW$2hy~_kG|8r z;D>B793F0V=E9uPN@aAg?qw62ae9v>BiP93;mL(xZqD9~(+TmWo=-*eKX=70$N7Xf z4(#=`#ZJfhgsupM3OW1Wwps~Tg2}>Pbm64MKJmhYW0U1E$D_W3JPyx$B1(*Pe zbDXYNp$~2IexaF_qwWa0w9@fvp;H;uJ2oSK#5(N9TtpsUV%%|KR zWYr0qVk}O?2w3Sh39&dlYxu4n=+eVrKp+>rRM)jN3`U+e4cmloZ{BJ;!2ycB-fGcI z8R79A-(o9qdWi_E`mUQ|FfG{wghcm;EE+_u7J(g<(};*8aXFAB$9gmP3bAz~t=5F{ zx;~*vwGIT_lE9oGaB7khn)CCO!`6d8$;6zptAPrB<@xVqGSbPRP9>gC71*&Y_>mgZ zfSs&H9he6L22rdTqMq0j{!>gGoiYu4I{SZ1yV~ZqZ6y5teud4;Xn+7zMN_h5k%*>~ zz9e%=(_Ec?IE|(QleEMOMLHzq#;5RpduJB_2}*M6-pwSoxd4^~umE-!z_X7E?B)@H z-Sq{w)tC6)sRUU8q=}u-DNOuEi(e&1K?Mt9WmXjoo3pHpd}d3Ce`0qsR3GKH6P~U7 z%)CH`w>T))aETAf!GB`Syp(w>{HLz;t@#ar+GVCgDjq=~57PS##$fU0cOk~^D8+7> zx_2wMbe|ca(4x;o@tjnwqc(E90#OB(>r$nU^xp=lX+Wc}n*&@|uHd>=rUx;U z$NII^CY5UvDYkjO;)Wn9%2U^+O@rdeeqBG9erN zg7Xn=WE*U%x5xD9%NJrHfxbk$u~>sdWa4ua%ACMwj4eHhrHwPyW#N5GVeI#aHKIv!_7gtFr4;_x>H>k z%v_6svPi@hO_FNaS}Llr@Wy^XuVMXw8DYi~7<0>+acD!9i^;^wa;39e^|DN_tSnQV zW!lR!n||#@Kapz=-lB@?YHhGOpG|=Y$3MZEOZbEa-(pAohg|dDIH}v#(pOPTbh_ksa6xpI8vhn|OOI30_T#Uq8eF|(J=pkn zkJ?lmtWVf$JA^(J?==xoNHy(X^l0--X)dDxOg$CJ0r4j_0BpOztJhhZbPUePr5KN{ z{L72+cs#Y`#`gk5e^!@3;E3=*np@y~Be_LU?aZJqgEw0#)a+iV(JA6(%c;^I;$H-H z7@+{4U~RvrEly_NToh3fZqTY35 zUR{fw>ji!Y*dML_qCfxTvIdPSs9}?+J^9dT4*qje!+JAe6E@~`qY&`B3_hE_07xfN z^n3`0PD5PSN>NZcFGV3Fn{dg-NOloeb@9FxtoisLL~^0l0hrY<7)jd+9cI>^HmT|3WAGq!D&LtAm52CokKsfLZ9 zR|h>KU5_^8L?<%uxYwA+GjK%x>qr8+=$8~nE<_Uk)f&Nw7cCCm@NHk7Ht#!2+HxWC zKhF)*;c1_w@(kE~@&38xOwt~MdeI+25_B)pI+_^cHEPgy9$3s);8LJUqqF^A????) zYP+q_57I?|b3M~o2msw1d?;NYIm(}KZHo}yaiYvCu{D)zD4zXfSY!yi8>LfI}eK$b6kRX?_+BqcVXLYgw|zDplB34xku`s1-?_ z%#TzH@hF3!9v;6^9EcD@_K%5ZIx|n^K&A~<6EM)YRk)Q!Ib1K~a6LbjhK%9I z$yDW2Sg2p~eM50cgCBh9jaHO+BbdPXcs85Nzq+_fGVy&6vtC_3G3&&CGS|ta_cX3t zlBst!r47IGX49t@nN9sm+B7Q~{Oy}>{(h#q{;j;bOY`-If4&jZu|J%QE-$0891Z^s Qd+~RF0G-7o< [$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, [_cache[4] || (_cache[4] = _createElementVNode(\"span\", {\n class: \"mobile-drawer-title\"\n }, \"目录导航\", -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_2, [_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 }), _cache[5] || (_cache[5] = _createElementVNode(\"span\", null, \"根目录\", -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_3);\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 }), _cache[6] || (_cache[6] = _createElementVNode(\"span\", null, \"返回上一级\", -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=2d8e83ec&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=2d8e83ec&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-2d8e83ec\"]])\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 }), _cache[11] || (_cache[11] = _createElementVNode(\"span\", null, \"查看详情\", -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 }), _cache[12] || (_cache[12] = _createElementVNode(\"span\", null, \"复制链接\", -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 }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"下载文件\", -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 }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"移动文件\", -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 }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"标签管理\", -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 }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"复制链接\", -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 }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"移动文件夹\", -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 ? '删除文件夹' : '删除文件'), 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=7579ad69&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=7579ad69&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-7579ad69\"]])\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 key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_13 = {\n class: \"tags-container\"\n};\nconst _hoisted_14 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_15 = {\n class: \"tab-content\"\n};\nconst _hoisted_16 = {\n class: \"tab-description\"\n};\nconst _hoisted_17 = {\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: \"批量标签管理\",\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: \"添加\",\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, \"为选中的 \" + _toDisplayString($options.fileCount) + \" 个文件添加标签\", 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: \"输入标签名称\",\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\", \"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, [_cache[3] || (_cache[3] = _createElementVNode(\"h4\", null, \"待添加的标签\", -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, \" 暂无待添加标签 \"))]), _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(() => [...(_cache[4] || (_cache[4] = [_createTextVNode(\" 添加到所有文件 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"移除\",\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_cache[6] || (_cache[6] = _createElementVNode(\"p\", {\n class: \"tab-description\"\n }, \"移除选中文件的共有标签\", -1)), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_cache[5] || (_cache[5] = _createElementVNode(\"h4\", null, \"共有标签\", -1)), _createElementVNode(\"div\", _hoisted_13, [(_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_14, \" 选中的文件没有共有标签 \"))])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"清空\",\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"p\", _hoisted_16, \"清空选中的 \" + _toDisplayString($options.fileCount) + \" 个文件的所有标签\", 1), _createVNode(_component_el_alert, {\n title: \"⚠️警告\",\n type: \"warning\",\n description: \"此操作将清空所有选中文件的标签,且不可恢复\",\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [...(_cache[7] || (_cache[7] = [_createTextVNode(\" 确认清空所有标签 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"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('加载共有标签失败');\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('标签已在列表中');\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('请先添加要批量添加的标签');\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(`成功为 ${data.updated} 个文件添加标签`);\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error('批量添加标签失败');\n }\n } else {\n throw new Error('批量添加标签失败');\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error('批量添加标签失败');\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(`成功从 ${data.updated} 个文件中移除标签`);\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error('移除标签失败');\n }\n } else {\n throw new Error('移除标签失败');\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error('移除标签失败');\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(`确定要清空选中的 ${this.fileCount} 个文件的所有标签吗?此操作不可恢复。`, '确认清空', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info('已取消清空操作');\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(`成功清空 ${data.updated} 个文件的标签`);\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error('清空标签失败');\n }\n } else {\n throw new Error('清空标签失败');\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error('清空标签失败');\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=dacf7742&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=dacf7742&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-dacf7742\"]])\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: \"标签管理\",\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(() => [...(_cache[5] || (_cache[5] = [_createTextVNode(\"关闭\", -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: \"输入标签名称\",\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\", \"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, [_cache[2] || (_cache[2] = _createElementVNode(\"h4\", null, \"当前标签\", -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, \" 暂无标签 \"))]), _createElementVNode(\"div\", _hoisted_8, [_cache[4] || (_cache[4] = _createElementVNode(\"h4\", null, \"常用标签\", -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 }), _cache[3] || (_cache[3] = _createTextVNode(\" 加载中... \", -1))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \" 暂无常用标签 \"))])])]),\n _: 1\n }, 8, [\"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('加载标签失败');\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('标签已存在');\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('标签添加成功');\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 || '添加标签失败');\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || '添加标签失败');\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('标签删除成功');\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error('删除标签失败');\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error('删除标签失败');\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=8b4291b4&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=8b4291b4&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-8b4291b4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment } 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: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_7 = {\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_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: \"文件详情\",\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_button, {\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 }), _cache[15] || (_cache[15] = _createTextVNode(\" 下载 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[16] || (_cache[16] = _createTextVNode(\" 标签 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[17] || (_cache[17] = _createTextVNode(\" 黑名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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: \"user-plus\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _cache[18] || (_cache[18] = _createTextVNode(\" 白名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_button, {\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 }), _cache[19] || (_cache[19] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n })]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $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: \"原始链接\",\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _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[6] || (_cache[6] = $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[7] || (_cache[7] = $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[8] || (_cache[8] = $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[9] || (_cache[9] = $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[10] || (_cache[10] = $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[11] || (_cache[11] = $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[13] || (_cache[13] = (...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: \"文件名\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件类型\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileType || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件大小\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileSize ? $props.file.metadata.FileSize + ' MB' : '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传时间\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"渠道类型/名称\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || '未知') + \" / \" + _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"访问状态/审查\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType) + \" / \" + _toDisplayString($props.file?.metadata?.Label || '无'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传IP\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传地址\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件标签\"\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_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_7, \"暂无标签\"))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"column\"])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]);\n}","import { ElMessage } from 'element-plus';\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'],\n data() {\n return {\n activeTab: 'originUrl'\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 '未知';\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return '正常(白名单)';\n if (listType === 'Block') return '已屏蔽(黑名单)';\n if (label === 'adult') return '已屏蔽(审查不通过)';\n return '正常';\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('链接已复制');\n });\n },\n openImageLink() {\n if (this.fileLink) {\n // 移除 ?from=admin 参数\n const cleanUrl = this.fileLink.replace(/\\?from=admin$/, '');\n window.open(cleanUrl, '_blank');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=0dc381fc&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=0dc381fc&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-0dc381fc\"]])\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 ? '-' : $props.item.metadata?.FileSize ? $props.item.metadata.FileSize + ' MB' : '-'), 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: \"复制链接\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"下载\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"移动\",\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 })], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: \"复制链接\",\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 }), _createVNode(_component_el_tooltip, {\n content: \"移动\",\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 })], 64)), _createVNode(_component_el_tooltip, {\n content: \"删除\",\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 })])], 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 return 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 },\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=9968e9fe&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=9968e9fe&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-9968e9fe\"]])\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 = [\"src\"];\nconst _hoisted_9 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_10 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_11 = {\n class: \"file-name-row\"\n};\nconst _hoisted_12 = {\n class: \"file-name\"\n};\nconst _hoisted_13 = {\n class: \"action-bar\"\n};\nconst _hoisted_14 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_15 = {\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 }), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"error-text\"\n }, \"加载失败\", -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_8), [[_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 class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[21] || (_cache[21] = [_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 }), _cache[22] || (_cache[22] = _createElementVNode(\"span\", {\n class: \"error-text\"\n }, \"加载失败\", -1))])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"详情\",\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\"])]), _createElementVNode(\"div\", _hoisted_15, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"移动\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"删除\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"下载\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"复制链接\",\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\"])])])])]),\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=ddf49ce2&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=ddf49ce2&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-ddf49ce2\"]])\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: \"复制链接\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"移动\",\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\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: \"删除\",\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\"])])])) : _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=20e5d6b4&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=20e5d6b4&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-20e5d6b4\"]])\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=71848b62&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=71848b62&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-71848b62\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, 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-options\"\n};\nconst _hoisted_4 = {\n class: \"filter-section\"\n};\nconst _hoisted_5 = {\n class: \"filter-options\"\n};\nconst _hoisted_6 = {\n class: \"filter-section\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-options\"\n};\nconst _hoisted_10 = {\n class: \"filter-section\"\n};\nconst _hoisted_11 = {\n class: \"filter-options\"\n};\nconst _hoisted_12 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_15 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_16 = {\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, [_cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"访问状态\", -1)), _createElementVNode(\"div\", _hoisted_3, [_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($data.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_4, [_cache[13] || (_cache[13] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"黑白名单\", -1)), _createElementVNode(\"div\", _hoisted_5, [_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($data.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_6, [_cache[14] || (_cache[14] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"审查结果\", -1)), _createElementVNode(\"div\", _hoisted_7, [_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($data.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_8, [_cache[15] || (_cache[15] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"文件类型\", -1)), _createElementVNode(\"div\", _hoisted_9, [_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($data.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_10, [_cache[16] || (_cache[16] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"渠道类型\", -1)), _createElementVNode(\"div\", _hoisted_11, [_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($data.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_12, [_cache[17] || (_cache[17] = _createElementVNode(\"div\", {\n class: \"filter-title\"\n }, \"渠道名称\", -1)), _createElementVNode(\"div\", _hoisted_13, [_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_14)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_15, _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_16, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [...(_cache[18] || (_cache[18] = [_createTextVNode(\"清除筛选\", -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 // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions: [{\n label: '正常',\n value: 'normal'\n }, {\n label: '已屏蔽',\n value: 'blocked'\n }],\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions: [{\n label: '白名单',\n value: 'White'\n }, {\n label: '黑名单',\n value: 'Block'\n }, {\n label: '未设置',\n value: 'None'\n }],\n // 审查结果选项\n // 参考 FileDetailDialog: adult=已屏蔽(审查不通过), 其他=正常\n labelOptions: [{\n label: '正常',\n value: 'normal'\n }, {\n label: '12+内容',\n value: 'teen'\n }, {\n label: '成人内容',\n value: 'adult'\n }],\n fileTypeOptions: [{\n label: '图片',\n value: 'image'\n }, {\n label: '视频',\n value: 'video'\n }, {\n label: '音频',\n value: 'audio'\n }, {\n label: '其他',\n value: 'other'\n }],\n channelOptions: [{\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: '外链',\n value: 'External'\n }],\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\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=062d5f10&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=062d5f10&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-062d5f10\"]])\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, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } 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: \"el-dropdown-link\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_10 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_11 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_12 = [\"title\"];\nconst _hoisted_13 = {\n key: 0,\n class: \"content\"\n};\nconst _hoisted_14 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_15 = {\n class: \"empty-text\"\n};\nconst _hoisted_16 = {\n class: \"empty-hint\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_21 = {\n class: \"empty-text\"\n};\nconst _hoisted_22 = {\n class: \"empty-hint\"\n};\nconst _hoisted_23 = {\n class: \"pagination-container\"\n};\nconst _hoisted_24 = {\n class: \"pagination-center\"\n};\nconst _hoisted_25 = {\n class: \"pagination-right\"\n};\nconst _hoisted_26 = {\n class: \"page-total\"\n};\nconst _hoisted_27 = {\n class: \"page-jump\"\n};\nconst _hoisted_28 = {\n class: \"dialog-section\"\n};\nconst _hoisted_29 = {\n class: \"section-content\"\n};\nconst _hoisted_30 = {\n class: \"dialog-section\"\n};\nconst _hoisted_31 = {\n class: \"section-header\"\n};\nconst _hoisted_32 = {\n class: \"section-content\"\n};\nconst _hoisted_33 = {\n class: \"setting-item\"\n};\nconst _hoisted_34 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_35 = {\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_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 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: \"mini\",\n placeholder: \"搜索:#标签 -#排除标签\",\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\", \"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(() => [...(_cache[22] || (_cache[22] = [_createTextVNode(\"按时间倒序\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [...(_cache[23] || (_cache[23] = [_createTextVNode(\"按名称升序\", -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: \"全选此页\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.selectPageIcon,\n class: \"header-icon\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"icon\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleBatchAction,\n \"hide-on-click\": false,\n disabled: $data.selectedFiles.length === 0\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"copy\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"batch-action-item-icon\"\n }), _cache[24] || (_cache[24] = _createTextVNode(\" 复制 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"delete\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"batch-action-item-icon\"\n }), _cache[25] || (_cache[25] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"download\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"batch-action-item-icon\"\n }), _cache[26] || (_cache[26] = _createTextVNode(\" 下载 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"move\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"batch-action-item-icon\"\n }), _cache[27] || (_cache[27] = _createTextVNode(\" 移动 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"tagManagement\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"batch-action-item-icon\"\n }), _cache[28] || (_cache[28] = _createTextVNode(\" 标签管理 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"ban\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"batch-action-item-icon\"\n }), _cache[29] || (_cache[29] = _createTextVNode(\" 加入黑名单 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"white\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-plus\",\n class: \"batch-action-item-icon\"\n }), _cache[30] || (_cache[30] = _createTextVNode(\" 加入白名单 \", -1))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-h\",\n class: _normalizeClass([\"header-icon\", {\n disabled: $data.selectedFiles.length === 0\n }])\n }, null, 8, [\"class\"])])]),\n _: 1\n }, 8, [\"onCommand\", \"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"链接格式\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_8, [_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\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: $data.viewMode === 'card' ? '列表视图' : '卡片视图',\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: \"退出登录\",\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\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: \"main-container\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : '根目录'), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[4] || (_cache[4] = $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.$data.Number} 个文件`\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_12)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_15, _toDisplayString($options.hasSearchOrFilter ? '未找到匹配的文件或文件夹' : '当前目录为空'), 1), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? '尝试调整搜索条件或筛选器' : '上传文件后将显示在这里'), 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))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[5] || (_cache[5] = $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)]), _cache[31] || (_cache[31] = _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\"\n }, \"预览\", -1)), _cache[32] || (_cache[32] = _createElementVNode(\"div\", {\n class: \"list-col list-col-name\"\n }, \"文件名\", -1)), _cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n class: \"list-col list-col-tags\"\n }, \"标签\", -1)), _cache[34] || (_cache[34] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel\"\n }, \"渠道类型\", -1)), _cache[35] || (_cache[35] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel-name\"\n }, \"渠道名称\", -1)), _cache[36] || (_cache[36] = _createElementVNode(\"div\", {\n class: \"list-col list-col-address\"\n }, \"上传地址\", -1)), _cache[37] || (_cache[37] = _createElementVNode(\"div\", {\n class: \"list-col list-col-size\"\n }, \"大小\", -1)), _cache[38] || (_cache[38] = _createElementVNode(\"div\", {\n class: \"list-col list-col-date\"\n }, \"上传时间\", -1)), _cache[39] || (_cache[39] = _createElementVNode(\"div\", {\n class: \"list-col list-col-actions\"\n }, \"操作\", -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_20, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_21, _toDisplayString($options.hasSearchOrFilter ? '未找到匹配的文件或文件夹' : '当前目录为空'), 1), _createElementVNode(\"p\", _hoisted_22, _toDisplayString($options.hasSearchOrFilter ? '尝试调整搜索条件或筛选器' : '上传文件后将显示在这里'), 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))])), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"div\", _hoisted_24, [_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(() => [...(_cache[40] || (_cache[40] = [_createTextVNode(\" 加载更多 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, \"共 \" + _toDisplayString($options.realTotalPages) + \" 页\", 1), _createElementVNode(\"div\", _hoisted_27, [_cache[42] || (_cache[42] = _createElementVNode(\"span\", null, \"跳至\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $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[41] || (_cache[41] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n })]),\n _: 1\n }), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[8] || (_cache[8] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[9] || (_cache[9] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[10] || (_cache[10] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[11] || (_cache[11] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[12] || (_cache[12] = $event => $options.handleDetailDelete($data.detailFile?.name))\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\"]), _createVNode(_component_el_dialog, {\n title: \"链接格式\",\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_28, [_cache[49] || (_cache[49] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $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 }), _cache[43] || (_cache[43] = _createElementVNode(\"span\", null, \"原始链接\", -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[44] || (_cache[44] = _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[45] || (_cache[45] = _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[46] || (_cache[46] = _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[47] || (_cache[47] = _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 }), _cache[48] || (_cache[48] = _createElementVNode(\"span\", null, \"S3链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_30, [_createElementVNode(\"div\", _hoisted_31, [_cache[50] || (_cache[50] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"自定义链接\", -1)), _createVNode(_component_el_tooltip, {\n content: \"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入\",\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 })]), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_cache[51] || (_cache[51] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [_cache[52] || (_cache[52] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[16] || (_cache[16] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[53] || (_cache[53] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $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[19] || (_cache[19] = $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[20] || (_cache[20] = $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[21] || (_cache[21] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n return fileList ? JSON.parse(fileList) : { files: [], directories: [] };\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 保存文件列表到本地存储\r\n saveFileList(fileList) {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(fileList));\r\n return true;\r\n } catch (error) {\r\n console.error('Error saving file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getLocalFileList();\r\n fileList.files.push(newFile);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\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.saveFileList(fileList);\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.getLocalFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.saveFileList(fileList);\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.getLocalFileList();\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.saveFileList(fileList);\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.getLocalFileList();\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('索引构建中,当前搜索和排序结果可能不准确,请稍后再试。');\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.saveFileList(newFileList);\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.getLocalFileList();\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.saveFileList(fileList);\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","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport \"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/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/SkeletonLoader.vue';\nimport FileCard from '@/components/FileCard.vue';\nimport FolderCard from '@/components/FolderCard.vue';\nimport FileListItem from '@/components/FileListItem.vue';\nimport FileDetailDialog from '@/components/FileDetailDialog.vue';\nimport MobileActionSheet from '@/components/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/MobileDirectoryDrawer.vue';\nimport FilterDropdown from '@/components/FilterDropdown.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\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', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [] // 动态从文件列表中提取\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n MobileActionSheet,\n MobileDirectoryDrawer,\n FilterDropdown\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') {\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 === 'External') {\n file.channelTag = '外链';\n } else {\n file.channelTag = '未知';\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 '正常';\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return '受限';\n } else {\n return '正常';\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 || '未知',\n 'S3Location': this.detailFile?.metadata?.S3Location || '未知',\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || '未知'\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 || '未知',\n 'S3Location': this.detailFile?.metadata?.S3Location || '未知',\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || '未知'\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 ? 3 : 7;\n }\n },\n watch: {\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 TelegramNew: 'Telegram',\n CloudflareR2: 'Cloudflare R2',\n S3: 'S3',\n Discord: 'Discord',\n HuggingFace: 'HuggingFace'\n };\n\n // 按类型提取渠道名称\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[channel.type] || channel.type,\n // 使用 type: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: '复制成功'\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: '复制失败'\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success('删除成功');\n this.showdetailDialog = false;\n }).catch(() => this.$message.error('删除失败'));\n }).catch(() => console.log('已取消删除'));\n },\n handleBlock(key) {\n this.$confirm('此操作将把该文件加入黑名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.$message.success('加入黑名单成功');\n }).catch(() => this.$message.error('加入黑名单失败'));\n }).catch(() => console.log('已取消加入黑名单'));\n },\n handleWhite(key) {\n this.$confirm('此操作将把该文件加入白名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.$message.success('加入白名单成功');\n }).catch(() => this.$message.error('加入白名单失败'));\n }).catch(() => console.log('已取消加入白名单'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(`此操作将永久删除${isFolder ? '文件夹' : '该文件'}, 是否继续?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('请求失败');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success('删除成功');\n }).catch(() => this.$message.error('删除失败'));\n }).catch(() => console.log('已取消删除'));\n },\n handleBatchDelete() {\n this.$confirm('此操作将永久删除选中的文件及文件夹, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量删除成功');\n }).catch(() => this.$message.error('批量删除失败'));\n }).catch(() => console.log('已取消批量删除'));\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: '正在获取文件列表...'\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('没有可复制的链接');\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link); // 过滤掉空链接\n\n if (links.length === 0) {\n this.$message.warning('没有可复制的链接');\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(`批量复制 ${links.length} 个链接成功`);\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('批量复制链接失败:', error);\n this.$message.error('批量复制链接失败,请重试');\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('批量复制链接成功');\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.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('加载更多文件失败,请检查网络连接');\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 this.$store.commit('setCredentials', null);\n this.$router.push('/adminLogin');\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 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.$prompt('请输入新的目录', '移动文件', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n inputValue: '/',\n beforeClose: (action, instance, done) => {\n if (action === 'confirm') {\n const value = instance.inputValue;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return; // 验证失败,不关闭弹窗\n }\n done(); // 验证通过,关闭弹窗\n } else {\n done(); // 取消操作,直接关闭\n }\n }\n }).then(({\n value\n }) => {\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning('目标文件夹不能是当前文件夹');\n return;\n }\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${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 // 创建临时数组\n const tempData = [...this.tableData];\n // 清空数组\n this.tableData = [];\n // 在下一个tick中恢复数据\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success('移动成功');\n } else {\n return Promise.reject('请求失败');\n }\n }).then(() => {\n // 刷新本地文件列表\n this.refreshLocalFileList();\n }).catch(() => this.$message.error('移动失败'));\n }).catch(() => console.log('已取消移动文件'));\n },\n handleBatchMove() {\n // 弹窗输入新的文件夹路径\n this.$prompt('请输入新的目录', '移动文件', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n inputValue: '/',\n beforeClose: (action, instance, done) => {\n if (action === 'confirm') {\n const value = instance.inputValue;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return; // 验证失败,不关闭弹窗\n }\n done(); // 验证通过,关闭弹窗\n } else {\n done(); // 取消操作,直接关闭\n }\n }\n }).then(({\n value\n }) => {\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning('目标文件夹不能是当前文件夹');\n return;\n }\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${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 // 创建临时数组\n const tempData = [...this.tableData];\n // 清空数组\n this.tableData = [];\n // 在下一个tick中恢复数据\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success('移动成功');\n }).then(() => {\n // 刷新本地文件列表\n this.refreshLocalFileList();\n }).catch(() => this.$message.error('移动失败'));\n }).catch(() => console.log('已取消移动文件'));\n },\n handleBatchBlock() {\n this.$confirm('此操作将把选中的文件加入黑名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量加入黑名单成功');\n }).catch(() => this.$message.error('批量加入黑名单失败'));\n }).catch(() => console.log('已取消批量加入黑名单'));\n },\n handleBatchWhite() {\n this.$confirm('此操作将把选中的文件加入白名单, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\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('批量加入白名单成功');\n }).catch(() => this.$message.error('批量加入白名单失败'));\n }).catch(() => console.log('已取消批量加入白名单'));\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('请输入有效的页码');\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(`页码不能超过 ${this.realTotalPages}`);\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info('正在加载数据,请稍候...');\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('加载数据失败,请检查网络连接');\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('获取文件列表失败');\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 console.error('Error refreshing file list:', error);\n this.$message.error('刷新失败,请重试');\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('刷新失败,请重试');\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('请先选择文件');\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 // 生成单个文件链接\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: '正在获取文件列表...'\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('文件夹为空,没有可复制的链接');\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\n if (links.length === 0) {\n this.$message.warning('没有可复制的链接');\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(`已复制 ${links.length} 个文件链接`);\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(`已复制 ${links.length} 个文件链接`);\n }\n } catch (error) {\n loading.close();\n console.error('复制文件夹链接失败:', error);\n this.$message.error('复制文件夹链接失败,请重试');\n }\n }\n },\n mounted() {\n this.loading = true;\n fetchWithAuth(\"/api/manage/check\", {\n method: 'GET'\n }).then(response => response.text()).then(result => {\n if (result == \"true\") {\n this.showLogoutButton = true;\n return true;\n } else if (result == \"Not using basic auth.\") {\n return true;\n } else {\n throw new Error('Unauthorized');\n }\n }).then(() => {\n // 首次加载时刷新文件列表\n return this.refreshFileList();\n }).then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error('同步数据时出错,请检查网络连接');\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=5c4ee283&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=5c4ee283&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-5c4ee283\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: '目标目录必须以 \"/\" 开头' \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: '目标目录包含非法字符,请使用合法的路径格式' \r\n };\r\n }\r\n \r\n // 检查路径是否包含连续的斜杠\r\n if (path.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","/*!\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),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 L<*S;x3V8?sHzjlE diff --git a/js/app.f4ce2fc3.js b/js/app.0a61230d.js similarity index 57% rename from js/app.f4ce2fc3.js rename to js/app.0a61230d.js index e0ef19a..7773726 100644 --- a/js/app.f4ce2fc3.js +++ b/js/app.0a61230d.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={457:function(e,t,o){o(4114);var n=o(4373),r=o(4570),a=o.n(r),s=o(6915),i=o(1219);const l=n.A.create({baseURL:"/"});l.interceptors.request.use(e=>{if(e.withAuthCode){const t=a().get("authCode");t&&(e.headers["authCode"]=t)}return e},e=>Promise.reject(e)),l.interceptors.response.use(e=>e,e=>(e.config?.withAuthCode&&401===e.response?.status&&(i.nk.error("认证失败,请重新登录!"),s.A.push("/login")),Promise.reject(e))),t.A=l},2885:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(4068),s=(o(5412),o(372),o(8950)),i=o(2353),l=o(292),c=o(6768);function u(e,t,o,n,r,a){const s=(0,c.g2)("router-view");return(0,c.uX)(),(0,c.Wv)(s)}var d=o(8401),m=o(3785),p={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{useDarkMode(){this.setSiteIcon()}},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return void(this.osInstance=(0,m.ae)(document.body));this.osInstance=(0,m.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 t=document.querySelector(".el-image-viewer__wrapper");t?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})},setSiteIcon(){const e=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');e.forEach(e=>e.remove());const t=document.createElement("link"),o=document.createElement("link"),n=document.createElement("link");t.rel="icon",o.rel="apple-touch-icon",n.rel="mask-icon",this.useDarkMode?(t.href=this.userConfig?.siteIcon||"/logo-dark.png",o.href=this.userConfig?.siteIcon||"/logo-dark.png",n.href=this.userConfig?.siteIcon||"/logo-dark.png"):(t.href=this.userConfig?.siteIcon||"/logo.png",o.href=this.userConfig?.siteIcon||"/logo.png",n.href=this.userConfig?.siteIcon||"/logo.png"),document.head.appendChild(t),document.head.appendChild(o),document.head.appendChild(n)}}},f=o(1241);const h=(0,f.A)(p,[["render",u]]);var g=h,b=o(6915),v=o(5507),y=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const C=(0,n.Ef)(g),k=(0,r.Zf)();C.component("font-awesome-icon",l.gc);for(const[M,E]of Object.entries(y))C.component(M,E);const A=()=>{const e=document.documentElement;let t;if(v.A.state.cusDarkMode&&null!==v.A.state.useDarkMode)t=v.A.state.useDarkMode;else{if(t=window.matchMedia("(prefers-color-scheme: dark)").matches,!t){const e=new Date,o=e.getHours();t=o>=22||o<6}v.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},w=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},U=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},S=(e,t)=>{const o=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');o.forEach(e=>e.remove());const n=document.createElement("link"),r=document.createElement("link"),a=document.createElement("link");n.rel="icon",r.rel="apple-touch-icon",a.rel="mask-icon",e?(n.href=t?.siteIcon||"/logo-dark.png",r.href=t?.siteIcon||"/logo-dark.png",a.href=t?.siteIcon||"/logo-dark.png"):(n.href=t?.siteIcon||"/logo.png",r.href=t?.siteIcon||"/logo.png",a.href=t?.siteIcon||"/logo.png"),document.head.appendChild(n),document.head.appendChild(r),document.head.appendChild(a)};v.A.dispatch("fetchUserConfig").then(()=>{A(),U(v.A.getters.userConfig),S(v.A.state.useDarkMode,v.A.getters.userConfig),v.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&v.A.state.cusDarkMode&&(w(t.useDarkMode),S(t.useDarkMode,v.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(A(),S(v.A.state.useDarkMode,v.A.getters.userConfig))}),C.use(v.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),C.use(v.A).use(b.A).use(a.A).use(k).mount("#app")})},5507:function(e,t,o){o(8111),o(1701);var n=o(8401),r=o(457),a=o(5131);t.A=(0,n.y$)({state:{userConfig:null,bingWallPapers:[],credentials:null,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.credentials,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,t){e.userConfig=t},setBingWallPapers(e,t){e.bingWallPapers=t},setCredentials(e,t){e.credentials=t},setUploadMethod(e,t){e.uploadMethod=t},setUploadCopyUrlForm(e,t){e.uploadCopyUrlForm=t},setCompressConfig(e,{key:t,value:o}){e.compressConfig[t]=o},setStoreUploadChannel(e,t){e.storeUploadChannel=t},setStoreChannelName(e,t){e.storeChannelName=t},setStoreUploadNameType(e,t){e.storeUploadNameType=t},setCustomUrlSettings(e,{key:t,value:o}){e.customUrlSettings[t]=o},setStoreAutoRetry(e,t){e.storeAutoRetry=t},setAdminUrlSettings(e,{key:t,value:o}){e.adminUrlSettings[t]=o},setUseDarkMode(e,t){e.useDarkMode=t},setCusDarkMode(e,t){e.cusDarkMode=t},setStoreUploadFolder(e,t){e.uploadFolder=t,localStorage.setItem("uploadFolder",t)},setStoreAutoReUpload(e,t){e.autoReUpload=t}},actions:{async fetchUserConfig({commit:e}){try{const t=await r.A.get("/api/userConfig");e("setUserConfig",t.data)}catch(t){console.log(t)}},async fetchBingWallPapers({commit:e}){try{const t=await r.A.get("/api/bing/wallpaper"),o=t.data.data,n=o.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(n.map(e=>new Promise((t,o)=>{const n=new Image;n.onload=t,n.onerror=o,n.src=e.url}))),e("setBingWallPapers",n)}catch(t){console.log(t)}}},modules:{},plugins:[(0,a.A)()]})},6915:function(e,t,o){o(4979);var n=o(8512),r=o(1219),a=o(4570),s=o.n(a),i=o(5507),l=o(457);const c=(e,t,o)=>{const n=i.A.getters.credentials;if(null===n&&"adminLogin"!==e.name){const e=btoa("unset:unset");l.A.get("/api/manage/check",{headers:{Authorization:"Basic "+e},withCredentials:!0}).then(t=>{if(200!==t.status)throw new Error("认证失败!");i.A.commit("setCredentials",e),o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"adminLogin"})})}else o()},u=(e,t,o)=>{let n=s().get("authCode");null===n&&"login"!==e.name?l.A.post("/api/login",{authCode:"unset"}).then(e=>{if(200!==e.status)throw new Error("认证失败!");s().set("authCode","unset","14d"),n="unset",o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"login"})}):o()},d=[{path:"/",name:"home",component:()=>Promise.all([o.e(275),o.e(600),o.e(23)]).then(o.bind(o,9811)),beforeEnter:u},{path:"/login",name:"login",component:()=>Promise.all([o.e(600),o.e(100)]).then(o.bind(o,2560))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([o.e(275),o.e(456),o.e(743)]).then(o.bind(o,35)),beforeEnter:c},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([o.e(275),o.e(456),o.e(119),o.e(419)]).then(o.bind(o,8419)),beforeEnter:c},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([o.e(275),o.e(456),o.e(119),o.e(407)]).then(o.bind(o,6407)),beforeEnter:c},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([o.e(600),o.e(214)]).then(o.bind(o,3950))},{path:"/blockimg",name:"blockimg",component:()=>o.e(917).then(o.bind(o,4917))},{path:"/whiteliston",name:"whiteliston",component:()=>o.e(845).then(o.bind(o,7226))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>o.e(667).then(o.bind(o,9667))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>o.e(226).then(o.bind(o,8226))}],m=(0,n.aE)({history:(0,n.LA)("/"),routes:d});t.A=m}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.m=e,function(){var e=[];o.O=function(t,n,r,a){if(!n){var s=1/0;for(u=0;u=a)&&Object.keys(o.O).every(function(e){return o.O[e](n[l])})?n.splice(l--,1):(i=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]}}(),function(){o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,{a:t}),t}}(),function(){o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){o.f={},o.e=function(e){return Promise.all(Object.keys(o.f).reduce(function(t,n){return o.f[n](e,t),t},[]))}}(),function(){o.u=function(e){return"js/"+e+"."+{23:"180d02c4",100:"d7a2e066",214:"e7ecaacc",226:"f737e39a",407:"f0b5dee5",419:"714823b1",456:"bfb68f0d",600:"3d796c41",667:"bbd60d43",743:"5066c4a0",845:"1bb9a557",917:"833cbf86"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{23:"e63939dd",100:"07b87787",119:"2a856832",214:"07b87787",226:"6548e7b4",275:"bf4b380e",407:"a32a5829",419:"605c1f2d",667:"a3c83e09",743:"ab3d1775",845:"6b45e8e3",917:"8529ad1e"}[e]+".css"}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="sanyue_imghub:";o.l=function(n,r,a,s){if(e[n])e[n].push(r);else{var i,l;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{if(e.withAuthCode){const t=a().get("authCode");t&&(e.headers["authCode"]=t)}return e},e=>Promise.reject(e)),l.interceptors.response.use(e=>e,e=>(e.config?.withAuthCode&&401===e.response?.status&&(i.nk.error("认证失败,请重新登录!"),s.A.push("/login")),Promise.reject(e))),t.A=l},2885:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(4068),s=(o(5412),o(372),o(8950)),i=o(2353),l=o(292),c=o(6768);function u(e,t,o,n,r,a){const s=(0,c.g2)("router-view");return(0,c.uX)(),(0,c.Wv)(s)}var d=o(8401),m=o(3785),p={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{useDarkMode(){this.setSiteIcon()}},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return void(this.osInstance=(0,m.ae)(document.body));this.osInstance=(0,m.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 t=document.querySelector(".el-image-viewer__wrapper");t?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})},setSiteIcon(){const e=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');e.forEach(e=>e.remove());const t=document.createElement("link"),o=document.createElement("link"),n=document.createElement("link");t.rel="icon",o.rel="apple-touch-icon",n.rel="mask-icon",this.useDarkMode?(t.href=this.userConfig?.siteIcon||"/logo-dark.png",o.href=this.userConfig?.siteIcon||"/logo-dark.png",n.href=this.userConfig?.siteIcon||"/logo-dark.png"):(t.href=this.userConfig?.siteIcon||"/logo.png",o.href=this.userConfig?.siteIcon||"/logo.png",n.href=this.userConfig?.siteIcon||"/logo.png"),document.head.appendChild(t),document.head.appendChild(o),document.head.appendChild(n)}}},f=o(1241);const h=(0,f.A)(p,[["render",u]]);var g=h,b=o(6915),v=o(5507),y=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const C=(0,n.Ef)(g),k=(0,r.Zf)();C.component("font-awesome-icon",l.gc);for(const[M,E]of Object.entries(y))C.component(M,E);const A=()=>{const e=document.documentElement;let t;if(v.A.state.cusDarkMode&&null!==v.A.state.useDarkMode)t=v.A.state.useDarkMode;else{if(t=window.matchMedia("(prefers-color-scheme: dark)").matches,!t){const e=new Date,o=e.getHours();t=o>=22||o<6}v.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},w=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},U=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},S=(e,t)=>{const o=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');o.forEach(e=>e.remove());const n=document.createElement("link"),r=document.createElement("link"),a=document.createElement("link");n.rel="icon",r.rel="apple-touch-icon",a.rel="mask-icon",e?(n.href=t?.siteIcon||"/logo-dark.png",r.href=t?.siteIcon||"/logo-dark.png",a.href=t?.siteIcon||"/logo-dark.png"):(n.href=t?.siteIcon||"/logo.png",r.href=t?.siteIcon||"/logo.png",a.href=t?.siteIcon||"/logo.png"),document.head.appendChild(n),document.head.appendChild(r),document.head.appendChild(a)};v.A.dispatch("fetchUserConfig").then(()=>{A(),U(v.A.getters.userConfig),S(v.A.state.useDarkMode,v.A.getters.userConfig),v.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&v.A.state.cusDarkMode&&(w(t.useDarkMode),S(t.useDarkMode,v.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(A(),S(v.A.state.useDarkMode,v.A.getters.userConfig))}),C.use(v.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),C.use(v.A).use(b.A).use(a.A).use(k).mount("#app")})},5507:function(e,t,o){o(8111),o(1701);var n=o(8401),r=o(457),a=o(5131);t.A=(0,n.y$)({state:{userConfig:null,bingWallPapers:[],credentials:null,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.credentials,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,t){e.userConfig=t},setBingWallPapers(e,t){e.bingWallPapers=t},setCredentials(e,t){e.credentials=t},setUploadMethod(e,t){e.uploadMethod=t},setUploadCopyUrlForm(e,t){e.uploadCopyUrlForm=t},setCompressConfig(e,{key:t,value:o}){e.compressConfig[t]=o},setStoreUploadChannel(e,t){e.storeUploadChannel=t},setStoreChannelName(e,t){e.storeChannelName=t},setStoreUploadNameType(e,t){e.storeUploadNameType=t},setCustomUrlSettings(e,{key:t,value:o}){e.customUrlSettings[t]=o},setStoreAutoRetry(e,t){e.storeAutoRetry=t},setAdminUrlSettings(e,{key:t,value:o}){e.adminUrlSettings[t]=o},setUseDarkMode(e,t){e.useDarkMode=t},setCusDarkMode(e,t){e.cusDarkMode=t},setStoreUploadFolder(e,t){e.uploadFolder=t,localStorage.setItem("uploadFolder",t)},setStoreAutoReUpload(e,t){e.autoReUpload=t}},actions:{async fetchUserConfig({commit:e}){try{const t=await r.A.get("/api/userConfig");e("setUserConfig",t.data)}catch(t){console.log(t)}},async fetchBingWallPapers({commit:e}){try{const t=await r.A.get("/api/bing/wallpaper"),o=t.data.data,n=o.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(n.map(e=>new Promise((t,o)=>{const n=new Image;n.onload=t,n.onerror=o,n.src=e.url}))),e("setBingWallPapers",n)}catch(t){console.log(t)}}},modules:{},plugins:[(0,a.A)()]})},6915:function(e,t,o){o(4979);var n=o(8512),r=o(1219),a=o(4570),s=o.n(a),i=o(5507),l=o(457);const c=(e,t,o)=>{const n=i.A.getters.credentials;if(null===n&&"adminLogin"!==e.name){const e=btoa("unset:unset");l.A.get("/api/manage/check",{headers:{Authorization:"Basic "+e},withCredentials:!0}).then(t=>{if(200!==t.status)throw new Error("认证失败!");i.A.commit("setCredentials",e),o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"adminLogin"})})}else o()},u=(e,t,o)=>{let n=s().get("authCode");null===n&&"login"!==e.name?l.A.post("/api/login",{authCode:"unset"}).then(e=>{if(200!==e.status)throw new Error("认证失败!");s().set("authCode","unset","14d"),n="unset",o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"login"})}):o()},d=[{path:"/",name:"home",component:()=>Promise.all([o.e(275),o.e(600),o.e(23)]).then(o.bind(o,9811)),beforeEnter:u},{path:"/login",name:"login",component:()=>Promise.all([o.e(600),o.e(100)]).then(o.bind(o,2560))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([o.e(275),o.e(456),o.e(257)]).then(o.bind(o,2833)),beforeEnter:c},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([o.e(275),o.e(456),o.e(119),o.e(419)]).then(o.bind(o,8419)),beforeEnter:c},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([o.e(275),o.e(456),o.e(119),o.e(407)]).then(o.bind(o,6407)),beforeEnter:c},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([o.e(600),o.e(214)]).then(o.bind(o,3950))},{path:"/blockimg",name:"blockimg",component:()=>o.e(917).then(o.bind(o,4917))},{path:"/whiteliston",name:"whiteliston",component:()=>o.e(845).then(o.bind(o,7226))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>o.e(667).then(o.bind(o,9667))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>o.e(226).then(o.bind(o,8226))}],m=(0,n.aE)({history:(0,n.LA)("/"),routes:d});t.A=m}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.m=e,function(){var e=[];o.O=function(t,n,r,a){if(!n){var s=1/0;for(u=0;u=a)&&Object.keys(o.O).every(function(e){return o.O[e](n[l])})?n.splice(l--,1):(i=!1,a0&&e[u-1][2]>a;u--)e[u]=e[u-1];e[u]=[n,r,a]}}(),function(){o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,{a:t}),t}}(),function(){o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){o.f={},o.e=function(e){return Promise.all(Object.keys(o.f).reduce(function(t,n){return o.f[n](e,t),t},[]))}}(),function(){o.u=function(e){return"js/"+e+"."+{23:"180d02c4",100:"d7a2e066",214:"e7ecaacc",226:"f737e39a",257:"06c98fe6",407:"f0b5dee5",419:"714823b1",456:"bfb68f0d",600:"3d796c41",667:"bbd60d43",845:"1bb9a557",917:"833cbf86"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{23:"e63939dd",100:"07b87787",119:"2a856832",214:"07b87787",226:"6548e7b4",257:"0e3de612",275:"bf4b380e",407:"a32a5829",419:"605c1f2d",667:"a3c83e09",845:"6b45e8e3",917:"8529ad1e"}[e]+".css"}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="sanyue_imghub:";o.l=function(n,r,a,s){if(e[n])e[n].push(r);else{var i,l;if(void 0!==a)for(var c=document.getElementsByTagName("script"),u=0;u{nT%nVI3sQfkBKR@cVwTE& zu5y{2!U~KXDwbz)y$6N#O2Ce^#6=8U6p}#AiiBGZH>Ehxf{vWB`jJO#i)9IF_x1c2EE|b6w2wY zt;p`9P{EQ3T6?wPAF39NCnFWSW?Q(e9v!4J{H$cwu<)Yg>XT;-KNCw5cjD1t6}%>a zxEJ~n@0^nAwUfCFARv!M4C91=s8i?R`*FD&=Oi36jmc=c4{@`JEsIG}y>gTJ3_Ksl zc2%3O-S=%CYf?lf`nMXQf&^Q-=8=U$?lJv@)%}xH4IvKvBD~j6qADu zXbSEPBGl@~m&2Lplj#j60)bGI5e^i8u-l7JIGtYdUT=WtWjKh?u+xdBvtb_+DWD!Ul4^mE2@`cNaivI$RkC;{m$FZDI9)gutRsqUj!OiOjS)Dz9 z1;B(uF_do+;TA&1760C)%lRUIpGIh;f^0|4*(Yio|8T1iceS{ebDH=PtTW;?+q<$j zsSHNEE4s}^RmwDqYBZ&ivGAQR$vn*v1$JPFj+rDBM9Ri`;_jSf{l-;foo=K3v`PW^w0I`C zev>YR$}L{``wFgE?>i(S6IM7sfTqEUYa#7du6$MhDr>C1HkT5rn@znf!k)0d0xS3K zr&3r8-*m-{uoWju?;JUQ7R#E(+PaE^^&=3qT*C#B7KDav(S`80T4H_n7E0)L<%j(M zBs6O_pDsD3kmEQ!PI}MipelL1&foC)(-+N7=)5QQf!et7Rc~V- zGhr42B5vbqmke3)t-SzaTOJH-0(TaeI|?K3a9A{+b#h;K7AoF#5Dz9W6Q!0(n_EQ&CVnbyBuV`=6X_m@4 ziJm?mhEN07z-f0+eaL!mU%9nL@)K3rZduuG%@mj*&h#mN0}U&I3eI7thl3rf>ldd7&EjBdWEfG!wmNcdAumA$c&uX^rwYyQPfHyQ1rh^^zy9v%* z=zO@)xo)9<^VmY?sD;iy3!PgQI&Um=PFU!Cuh6+%q4TuDVx-4na%D?LU@Rsia*^s- zOqxyQeruf!%&ZTd>oE!Rw2GY-v+%qYa)RaU1p}xp$gu@4-Iv;;zhV21f2n*fHnHSN zjP0Z>r-M{|RGrSSCbD9)J@J;Nkg|-fP}Sn=7_VC+p1jP z!QAMvq7decYE&5aCegS}RzVK$4%3~rqS>ATr88WuqS?eAEp`0EzhM9kzbryEAr)KA zCf*uS=}giUTBgRNa*iSofV8}9Hs#iWRxR*KMrp7V#_+jdTiaRLO?zNBxwo4J>?Td0 zFq^4=w~L&nTf1ne9)}ZmKZDDO4b3QWM9$Hfbv`Rq!Rx)9-JYiw9KNxg6eAxRpV)kG zTbYFHL&_wi9x^7!?Fo&UQvnmeJ4k#A_p=f=@pe!{$eX&5H>DbOK?TdPp0ISRC(aaP z#0UQw_(L$oHk%epGKzP$B|bYNoSAVvp?*JqA*&(AeByt{tqBHCkb{QpG8s50U{Q?7 zW@A*kk50CGPCJ@>c*JHio{Z$yyR$V<3jY1XD=4djJ*Wf_h)JqiPw=|*^y#?Q>Q3l! zqCsK!j~N1*?}kfKzC-x;uT-5QaOM7lb4LIRzZvR!*-{Y1m74ajQt-7 L-+HJ|MKu5bided- delta 1943 zcmV;I2Wa@ND6lB7HVaC=Zw$I87TD<>EHBzmhc4|kK9v$NEtqSe1dtzf;nUjGFQh$ab_%YdHmdbvv za+#dM3XB~pmS=WCmp&W8Ul6=rz;g9t?`Zir~VKZwwDn)F*qw}a@Q+lf%G)$hk$-a>TP?L{b@PA_?{H$e0< z97Jf?>BQ67u#bwdn4F>D8-tFQyG&(zW6bBLRvnvzWs832vU8av<+59Y>2NR@4iF7t zC2c`&8M9t91MEpvis9+PYgw;T6V8}$&*l2%Z|;dbg5)SP{y#_L%1EY~P2T~TB-eJzv}?JV_GV*g#%g(mmx?E;f1EdNZf_g$ zBA0g!ce^!auGAU)mBi>wo}s9L&eAhPT#g7r0)}p2G)#Ax;Jr)?DOYrJd;9L@i??6> z>ARP&uRnYD`Sq7CUwj7LP9&0M)f;P;QnPme%~J=^5Xx~zc3%7m838h1wWsn*)-k2h z2yH)gQ6)B12JnXVHl1dvf1H!(>GNR-HE<1_cK6hWtoQbfTWcggQI+kMmF?C{feGSF zpEA&}5~$xCc6vD2vAVu7#@vgHW)pKL(r-5K$8Mj<>f%6=pSW)TBl2&aJlkfEZOzOF zSq9ejc-XQ~(37l8Q|b;2Ab{+w zX6s(N8?_2}K~rHm*ipZm;LL^2hYOwS7CMhDbdFl+{Ik%xWuf!NLg$2q&i4wP%N06L zD=bEOEGAdBbOgp?LLwKbj>V+eRPMLd$-vC|;JF@?Ku@dKSuqQbYat_8-d-?(+JYQg z@X~#$E&3a_@A#L>f9GNoORmJ&PRe3BNYzKx=?rTkD>mB`Z)qCo3}5^;Byl#7+WFx{ zV1=>R5&}qAYiEu)JGrgO1s=?e9xDoA&ZtI(ac>fh+hi5w@aiz#Su2|DDNs7Y)he1z z?9o!kKl~F0(D2J5R1;FM)okLeA(hS~U7=-aOe*In@&HK6f6Hc5ZY^ll0QtyJ^5~()0g(X}YzGhU#%RarZO0oY>HeB1hyLomuCzQWd=3 z+u7}TYQf=iyt(M%5^MW@zpAo^S3{F d$@pp&%(}5?&*Dz-je)Y*{{bpR2{c1B002L#&(i<^ diff --git a/js/app.f4ce2fc3.js.map b/js/app.0a61230d.js.map similarity index 99% rename from js/app.f4ce2fc3.js.map rename to js/app.0a61230d.js.map index 57a5a79..100528a 100644 --- a/js/app.f4ce2fc3.js.map +++ b/js/app.0a61230d.js.map @@ -1 +1 @@ -{"version":3,"file":"js/app.f4ce2fc3.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/App.vue?eaa6","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/router/index.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\nimport cookies from 'vue-cookies';\r\nimport router from '@/router/index';\r\nimport { ElMessage } from 'element-plus'\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n});\r\n\r\n// 请求拦截器\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n // 如果配置中标记了withAuthCode,则添加authCode到header\r\n if (config.withAuthCode) {\r\n const authCode = cookies.get('authCode');\r\n if (authCode) {\r\n config.headers['authCode'] = authCode;\r\n }\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// 响应拦截器\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n // 如果请求配置了withAuthCode且返回401,则跳转到登录页\r\n if (error.config?.withAuthCode && error.response?.status === 401) {\r\n ElMessage.error('认证失败,请重新登录!');\r\n router.push('/login');\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { resolveComponent as _resolveComponent, 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 return _openBlock(), _createBlock(_component_router_view);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\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 useDarkMode() {\n this.setSiteIcon();\n }\n },\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 setSiteIcon() {\n // 同时更改 icon apple-touch-icon 和 mask-icon\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\n existingIcons.forEach(icon => icon.remove());\n const iconLink = document.createElement('link');\n const appleIconLink = document.createElement('link');\n const maskIconLink = document.createElement('link');\n iconLink.rel = 'icon';\n appleIconLink.rel = 'apple-touch-icon';\n maskIconLink.rel = 'mask-icon';\n if (this.useDarkMode) {\n iconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n } else {\n iconLink.href = this.userConfig?.siteIcon || '/logo.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n }\n document.head.appendChild(iconLink);\n document.head.appendChild(appleIconLink);\n document.head.appendChild(maskIconLink);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=7df82a17\"\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 { fas } from '@fortawesome/free-solid-svg-icons'; // 引入所有 solid 图标\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\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(fas);\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 || '/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/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).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(head).mount('#app');\r\n})\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 credentials: null,\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: state => state.credentials,\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(state, credentials) {\r\n state.credentials = credentials;\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","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport cookies from 'vue-cookies'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n // 从store中获取凭据\r\n const credentials = store.getters.credentials\r\n if (credentials === null && to.name !== 'adminLogin') {\r\n // 尝试未设置密码的情况\r\n const credentials = btoa('unset:unset')\r\n axios.get('/api/manage/check', {\r\n headers: {\r\n 'Authorization': 'Basic ' + credentials\r\n },\r\n withCredentials: true\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n store.commit('setCredentials', credentials)\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'adminLogin' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n let authCode = cookies.get('authCode');\r\n if (authCode === null && to.name !== 'login') {\r\n // 尝试未设置密码的情况\r\n axios.post('/api/login', {\r\n authCode: 'unset'\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n cookies.set('authCode', 'unset', '14d')\r\n authCode = 'unset'\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'login' })\r\n })\r\n } else {\r\n next()\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","// 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 + \".\" + {\"23\":\"180d02c4\",\"100\":\"d7a2e066\",\"214\":\"e7ecaacc\",\"226\":\"f737e39a\",\"407\":\"f0b5dee5\",\"419\":\"714823b1\",\"456\":\"bfb68f0d\",\"600\":\"3d796c41\",\"667\":\"bbd60d43\",\"743\":\"5066c4a0\",\"845\":\"1bb9a557\",\"917\":\"833cbf86\"}[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 + \".\" + {\"23\":\"e63939dd\",\"100\":\"07b87787\",\"119\":\"2a856832\",\"214\":\"07b87787\",\"226\":\"6548e7b4\",\"275\":\"bf4b380e\",\"407\":\"a32a5829\",\"419\":\"605c1f2d\",\"667\":\"a3c83e09\",\"743\":\"ab3d1775\",\"845\":\"6b45e8e3\",\"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 = {\"23\":1,\"100\":1,\"119\":1,\"214\":1,\"226\":1,\"275\":1,\"407\":1,\"419\":1,\"667\":1,\"743\":1,\"845\":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(!/^(119|275)$/.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__(2885); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","interceptors","request","use","config","withAuthCode","authCode","cookies","headers","error","Promise","reject","response","status","ElMessage","router","push","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","data","osInstance","imageViewerObserver","computed","mounted","this","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","useDarkMode","setSiteIcon","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","MutationObserver","mutations","imageViewer","querySelector","options","observe","childList","subtree","existingIcons","querySelectorAll","forEach","icon","remove","iconLink","createElement","appleIconLink","maskIconLink","rel","href","userConfig","siteIcon","head","appendChild","__exports__","library","add","fas","app","createApp","App","createHead","component","FontAwesomeIcon","key","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","documentElement","isDarkMode","store","state","cusDarkMode","window","matchMedia","matches","now","Date","hour","getHours","commit","classList","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","dispatch","then","getters","subscribe","mutation","type","payload","ElementPlus","mount","catch","createStore","bingWallPapers","credentials","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","fetchBingWallPapers","wallpapers","map","wallpaper","url","all","resolve","img","Image","onload","onerror","src","modules","plugins","createPersistedState","adminAuthGuard","to","from","next","name","btoa","withCredentials","res","Error","err","userAuthGuard","post","routes","path","beforeEnter","createRouter","history","createWebHistory","process","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","code","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.0a61230d.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/App.vue?eaa6","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/router/index.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\nimport cookies from 'vue-cookies';\r\nimport router from '@/router/index';\r\nimport { ElMessage } from 'element-plus'\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n});\r\n\r\n// 请求拦截器\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n // 如果配置中标记了withAuthCode,则添加authCode到header\r\n if (config.withAuthCode) {\r\n const authCode = cookies.get('authCode');\r\n if (authCode) {\r\n config.headers['authCode'] = authCode;\r\n }\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// 响应拦截器\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n // 如果请求配置了withAuthCode且返回401,则跳转到登录页\r\n if (error.config?.withAuthCode && error.response?.status === 401) {\r\n ElMessage.error('认证失败,请重新登录!');\r\n router.push('/login');\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { resolveComponent as _resolveComponent, 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 return _openBlock(), _createBlock(_component_router_view);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\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 useDarkMode() {\n this.setSiteIcon();\n }\n },\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 setSiteIcon() {\n // 同时更改 icon apple-touch-icon 和 mask-icon\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\n existingIcons.forEach(icon => icon.remove());\n const iconLink = document.createElement('link');\n const appleIconLink = document.createElement('link');\n const maskIconLink = document.createElement('link');\n iconLink.rel = 'icon';\n appleIconLink.rel = 'apple-touch-icon';\n maskIconLink.rel = 'mask-icon';\n if (this.useDarkMode) {\n iconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo-dark.png';\n } else {\n iconLink.href = this.userConfig?.siteIcon || '/logo.png';\n appleIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n maskIconLink.href = this.userConfig?.siteIcon || '/logo.png';\n }\n document.head.appendChild(iconLink);\n document.head.appendChild(appleIconLink);\n document.head.appendChild(maskIconLink);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=7df82a17\"\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 { fas } from '@fortawesome/free-solid-svg-icons'; // 引入所有 solid 图标\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\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(fas);\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 || '/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/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).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(head).mount('#app');\r\n})\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 credentials: null,\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: state => state.credentials,\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(state, credentials) {\r\n state.credentials = credentials;\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","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport cookies from 'vue-cookies'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n // 从store中获取凭据\r\n const credentials = store.getters.credentials\r\n if (credentials === null && to.name !== 'adminLogin') {\r\n // 尝试未设置密码的情况\r\n const credentials = btoa('unset:unset')\r\n axios.get('/api/manage/check', {\r\n headers: {\r\n 'Authorization': 'Basic ' + credentials\r\n },\r\n withCredentials: true\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n store.commit('setCredentials', credentials)\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'adminLogin' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n let authCode = cookies.get('authCode');\r\n if (authCode === null && to.name !== 'login') {\r\n // 尝试未设置密码的情况\r\n axios.post('/api/login', {\r\n authCode: 'unset'\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n cookies.set('authCode', 'unset', '14d')\r\n authCode = 'unset'\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'login' })\r\n })\r\n } else {\r\n next()\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","// 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 + \".\" + {\"23\":\"180d02c4\",\"100\":\"d7a2e066\",\"214\":\"e7ecaacc\",\"226\":\"f737e39a\",\"257\":\"06c98fe6\",\"407\":\"f0b5dee5\",\"419\":\"714823b1\",\"456\":\"bfb68f0d\",\"600\":\"3d796c41\",\"667\":\"bbd60d43\",\"845\":\"1bb9a557\",\"917\":\"833cbf86\"}[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 + \".\" + {\"23\":\"e63939dd\",\"100\":\"07b87787\",\"119\":\"2a856832\",\"214\":\"07b87787\",\"226\":\"6548e7b4\",\"257\":\"0e3de612\",\"275\":\"bf4b380e\",\"407\":\"a32a5829\",\"419\":\"605c1f2d\",\"667\":\"a3c83e09\",\"845\":\"6b45e8e3\",\"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 = {\"23\":1,\"100\":1,\"119\":1,\"214\":1,\"226\":1,\"257\":1,\"275\":1,\"407\":1,\"419\":1,\"667\":1,\"845\":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(!/^(119|275)$/.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__(2885); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","interceptors","request","use","config","withAuthCode","authCode","cookies","headers","error","Promise","reject","response","status","ElMessage","router","push","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","data","osInstance","imageViewerObserver","computed","mounted","this","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","useDarkMode","setSiteIcon","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","MutationObserver","mutations","imageViewer","querySelector","options","observe","childList","subtree","existingIcons","querySelectorAll","forEach","icon","remove","iconLink","createElement","appleIconLink","maskIconLink","rel","href","userConfig","siteIcon","head","appendChild","__exports__","library","add","fas","app","createApp","App","createHead","component","FontAwesomeIcon","key","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","documentElement","isDarkMode","store","state","cusDarkMode","window","matchMedia","matches","now","Date","hour","getHours","commit","classList","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","dispatch","then","getters","subscribe","mutation","type","payload","ElementPlus","mount","catch","createStore","bingWallPapers","credentials","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","fetchBingWallPapers","wallpapers","map","wallpaper","url","all","resolve","img","Image","onload","onerror","src","modules","plugins","createPersistedState","adminAuthGuard","to","from","next","name","btoa","withCredentials","res","Error","err","userAuthGuard","post","routes","path","beforeEnter","createRouter","history","createWebHistory","process","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","code","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/js/app.0a61230d.js.map.gz b/js/app.0a61230d.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..a62ce87ea1b0fbf10e8195021ba293164c5beabf GIT binary patch literal 16009 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 DIcq?8 literal 0 HcmV?d00001 diff --git a/js/app.f4ce2fc3.js.map.gz b/js/app.f4ce2fc3.js.map.gz deleted file mode 100644 index 0e588b80d29ee9356d052244c224d6f063f9c772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16013 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