From 939cf5c15499eaf1399cd32822a4042af1b88dde Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Thu, 15 Jan 2026 21:59:40 +0800 Subject: [PATCH] update v2.5.2 --- css/278.f6a0dd63.css | 1 + css/278.f6a0dd63.css.gz | Bin 0 -> 13504 bytes css/675.850ca348.css | 1 - css/675.850ca348.css.gz | Bin 13265 -> 0 bytes css/app.da21a01c.css | 1 - css/app.da21a01c.css.gz | Bin 3720 -> 0 bytes css/app.ee9a7bf2.css | 1 + css/app.ee9a7bf2.css.gz | Bin 0 -> 3750 bytes index.html | 2 +- index.html.gz | Bin 511 -> 511 bytes js/{675.63e531de.js => 278.3023ac4f.js} | 4 ++-- js/278.3023ac4f.js.gz | Bin 0 -> 49304 bytes js/278.3023ac4f.js.map | 1 + js/278.3023ac4f.js.map.gz | Bin 0 -> 114015 bytes js/675.63e531de.js.gz | Bin 48823 -> 0 bytes js/675.63e531de.js.map | 1 - js/675.63e531de.js.map.gz | Bin 112772 -> 0 bytes js/{app.9064fae6.js => app.659e81c1.js} | 4 ++-- js/{app.9064fae6.js.gz => app.659e81c1.js.gz} | Bin 5001 -> 5000 bytes ...pp.9064fae6.js.map => app.659e81c1.js.map} | 2 +- ...4fae6.js.map.gz => app.659e81c1.js.map.gz} | Bin 15465 -> 15465 bytes 21 files changed, 9 insertions(+), 9 deletions(-) create mode 100644 css/278.f6a0dd63.css create mode 100644 css/278.f6a0dd63.css.gz delete mode 100644 css/675.850ca348.css delete mode 100644 css/675.850ca348.css.gz delete mode 100644 css/app.da21a01c.css delete mode 100644 css/app.da21a01c.css.gz create mode 100644 css/app.ee9a7bf2.css create mode 100644 css/app.ee9a7bf2.css.gz rename js/{675.63e531de.js => 278.3023ac4f.js} (61%) create mode 100644 js/278.3023ac4f.js.gz create mode 100644 js/278.3023ac4f.js.map create mode 100644 js/278.3023ac4f.js.map.gz delete mode 100644 js/675.63e531de.js.gz delete mode 100644 js/675.63e531de.js.map delete mode 100644 js/675.63e531de.js.map.gz rename js/{app.9064fae6.js => app.659e81c1.js} (94%) rename js/{app.9064fae6.js.gz => app.659e81c1.js.gz} (51%) rename js/{app.9064fae6.js.map => app.659e81c1.js.map} (99%) rename js/{app.9064fae6.js.map.gz => app.659e81c1.js.map.gz} (74%) diff --git a/css/278.f6a0dd63.css b/css/278.f6a0dd63.css new file mode 100644 index 0000000..a958f08 --- /dev/null +++ b/css/278.f6a0dd63.css @@ -0,0 +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-529f3c7f]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-529f3c7f]{margin-left:0!important}.video-preview[data-v-529f3c7f]{width:100%;max-width:200px;border-radius:8px;cursor:pointer}.audio-preview[data-v-529f3c7f]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-529f3c7f]{width:100%;max-width:200px;border-radius:8px;cursor:pointer}.file-icon-detail[data-v-529f3c7f]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-529f3c7f]{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-529f3c7f]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-529f3c7f] .description-item{word-break:break-all;word-wrap:break-word}[data-v-529f3c7f] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}@media (max-width:768px){.detail-actions[data-v-529f3c7f]{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-51323bac]{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-51323bac] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-51323bac] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-51323bac]:hover{transform:scale(1.05)}.image-preview[data-v-51323bac],.video-preview[data-v-51323bac]{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-51323bac]{cursor:pointer}.img-card:hover .file-icon[data-v-51323bac],.img-card:hover .image-preview[data-v-51323bac],.img-card:hover .video-preview[data-v-51323bac]{transform:scale(1.08)}.image-preview[data-v-51323bac]:hover{opacity:.8}.file-short-info[data-v-51323bac]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-51323bac]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-51323bac],.success-tag[data-v-51323bac]{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-51323bac]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-51323bac]{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-51323bac]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-51323bac]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-51323bac]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-51323bac]{cursor:pointer}.card-bottom-overlay[data-v-51323bac]{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-51323bac]{display:flex;align-items:center;justify-content:center}.file-name[data-v-51323bac]{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-51323bac]{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-51323bac]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-51323bac],.action-bar-right[data-v-51323bac]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-51323bac]{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-51323bac]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-51323bac]:active{transform:scale(.95)}.action-btn-danger[data-v-51323bac]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-51323bac]{display:none!important}}.skeleton-wrapper[data-v-51323bac]{width:100%;height:100%;background:var(--skeleton-bg-color);position:relative;overflow:hidden}.skeleton-animation[data-v-51323bac]{width:100%;height:100%;background:linear-gradient(90deg,transparent,var(--skeleton-shimmer-color),transparent);animation:skeleton-loading-51323bac 1.5s infinite}@keyframes skeleton-loading-51323bac{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.error-wrapper[data-v-51323bac]{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-51323bac]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-51323bac]{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}#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-8a2e65f0]{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-8a2e65f0] .el-container,[data-v-8a2e65f0] .el-main{overflow:visible}[data-v-8a2e65f0] .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-8a2e65f0]{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-8a2e65f0]{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-8a2e65f0]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-8a2e65f0]{font-size:.95em}.header-content .actions[data-v-8a2e65f0]{gap:10px}.search-card[data-v-8a2e65f0] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8a2e65f0] .el-input__wrapper{padding:0 10px}.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:65vw}}.header-content[data-v-8a2e65f0]: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-8a2e65f0]: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-8a2e65f0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-8a2e65f0]{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-8a2e65f0]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-8a2e65f0]{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-8a2e65f0]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-8a2e65f0]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8a2e65f0]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8a2e65f0]{font-size:9px}}.header-content .actions[data-v-8a2e65f0]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-8a2e65f0]{margin-top:10px}}.header-content .actions i[data-v-8a2e65f0]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8a2e65f0]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-8a2e65f0]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-8a2e65f0]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-8a2e65f0]{color:var(--admin-purple)}.batch-action-item-icon[data-v-8a2e65f0]{width:20px;margin-right:5px}.search-card[data-v-8a2e65f0]{margin-left:auto;margin-right:20px}@media (max-width:768px){.search-card[data-v-8a2e65f0]{margin-right:0;margin-left:0;margin-top:10px}}.search-card[data-v-8a2e65f0] .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-8a2e65f0] .el-input__inner{width:300px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8a2e65f0] .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-8a2e65f0] .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-8a2e65f0] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8a2e65f0] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8a2e65f0] .el-input__inner{width:60vw}}.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:400px}@media (max-width:768px){.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:80vw}}.search-icon[data-v-8a2e65f0]{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-8a2e65f0]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-8a2e65f0] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8a2e65f0]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-8a2e65f0]{margin-top:12vh}}.content[data-v-8a2e65f0]{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}@media (max-width:768px){.content[data-v-8a2e65f0]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-8a2e65f0]{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-8a2e65f0]{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-8a2e65f0]{display:flex;align-items:center}.list-col-checkbox[data-v-8a2e65f0]{justify-content:center;min-width:40px}.custom-checkbox[data-v-8a2e65f0]{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-8a2e65f0]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-8a2e65f0],.custom-checkbox.indeterminate[data-v-8a2e65f0]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-8a2e65f0]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-8a2e65f0]{display:none}}.pagination-container[data-v-8a2e65f0]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8a2e65f0]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8a2e65f0] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .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-8a2e65f0] .btn-next,.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .btn-next:hover,.pagination-container[data-v-8a2e65f0] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-8a2e65f0]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-8a2e65f0]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-8a2e65f0]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-8a2e65f0]{width:50px}.page-jump .jump-input[data-v-8a2e65f0] .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-8a2e65f0] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-8a2e65f0]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-8a2e65f0]{order:0}.pagination-right[data-v-8a2e65f0]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-8a2e65f0]{width:45px}}.refresh-btn[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-8a2e65f0] .btn-prev{left:8px}[data-v-8a2e65f0] .btn-next,[data-v-8a2e65f0] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-8a2e65f0] .btn-next{right:8px}@media (min-width:768px){[data-v-8a2e65f0] .el-pagination.is-background .btn-next,[data-v-8a2e65f0] .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-8a2e65f0] .el-pagination.is-background .btn-next:hover,[data-v-8a2e65f0] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-8a2e65f0]{margin:0 3px}.breadcrumb[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-8a2e65f0]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple)}[data-v-8a2e65f0] .el-breadcrumb__item{cursor:pointer}[data-v-8a2e65f0] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-8a2e65f0]{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-8a2e65f0]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-8a2e65f0]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-8a2e65f0]{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-8a2e65f0]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8a2e65f0]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8a2e65f0]{display:flex}.desktop-only[data-v-8a2e65f0]{display:none!important}.breadcrumb-container[data-v-8a2e65f0]{padding:0;margin-left:0}} \ No newline at end of file diff --git a/css/278.f6a0dd63.css.gz b/css/278.f6a0dd63.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7c53ddee62f954629cb8b9fffdba0cf64374a923 GIT binary patch literal 13504 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: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-4969770b]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-4969770b]{margin-left:0!important}.video-preview[data-v-4969770b]{cursor:pointer}.audio-preview[data-v-4969770b],.image-preview[data-v-4969770b],.video-preview[data-v-4969770b]{width:100%;max-width:300px;border-radius:8px}.file-icon-detail[data-v-4969770b]{font-size:64px;color:var(--el-text-color-secondary)}[data-v-4969770b] .description-item{word-break:break-all;word-wrap:break-word}@media (max-width:768px){.detail-actions[data-v-4969770b]{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-44e8627d]{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-44e8627d] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-44e8627d] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-44e8627d]:hover{transform:scale(1.05)}.image-preview[data-v-44e8627d],.video-preview[data-v-44e8627d]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.img-card:hover .file-icon[data-v-44e8627d],.img-card:hover .image-preview[data-v-44e8627d],.img-card:hover .video-preview[data-v-44e8627d]{transform:scale(1.08)}.image-preview[data-v-44e8627d]:hover{opacity:.8}.file-short-info[data-v-44e8627d]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-44e8627d]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-44e8627d],.success-tag[data-v-44e8627d]{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-44e8627d]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-44e8627d]{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-44e8627d]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-44e8627d]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-44e8627d]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-44e8627d]{cursor:pointer}.card-bottom-overlay[data-v-44e8627d]{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-44e8627d]{display:flex;align-items:center;justify-content:center}.file-name[data-v-44e8627d]{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-44e8627d]{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-44e8627d]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-44e8627d],.action-bar-right[data-v-44e8627d]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-44e8627d]{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-44e8627d]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-44e8627d]:active{transform:scale(.95)}.action-btn-danger[data-v-44e8627d]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-44e8627d]{display:none!important}}.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-024a61ee{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-024a61ee{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-024a61ee]{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-024a61ee]{width:100%;height:100%;background:linear-gradient(90deg,var(--el-fill-color-light) 25%,var(--el-fill-color) 50%,var(--el-fill-color-light) 75%);background-size:200% 100%;animation:skeleton-shimmer-024a61ee 1.5s ease-in-out infinite}.skeleton-info[data-v-024a61ee]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:linear-gradient(transparent,rgba(0,0,0,.5))}.skeleton-text[data-v-024a61ee]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.2) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-024a61ee 1.5s ease-in-out infinite}.skeleton-list-item[data-v-024a61ee]{animation:skeleton-pulse-024a61ee 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-024a61ee]{width:18px;height:18px;border-radius:4px;background:var(--el-fill-color)}.skeleton-preview[data-v-024a61ee]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--el-fill-color-light) 25%,var(--el-fill-color) 50%,var(--el-fill-color-light) 75%);background-size:200% 100%;animation:skeleton-shimmer-024a61ee 1.5s ease-in-out infinite}.skeleton-text-long[data-v-024a61ee]{width:80%}.skeleton-text-long[data-v-024a61ee],.skeleton-text-short[data-v-024a61ee]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--el-fill-color-light) 25%,var(--el-fill-color) 50%,var(--el-fill-color-light) 75%);background-size:200% 100%;animation:skeleton-shimmer-024a61ee 1.5s ease-in-out infinite}.skeleton-text-short[data-v-024a61ee]{width:60px}.skeleton-text-tiny[data-v-024a61ee]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-024a61ee],.skeleton-text-tiny[data-v-024a61ee]{background:linear-gradient(90deg,var(--el-fill-color-light) 25%,var(--el-fill-color) 50%,var(--el-fill-color-light) 75%);background-size:200% 100%;animation:skeleton-shimmer-024a61ee 1.5s ease-in-out infinite}.skeleton-tag[data-v-024a61ee]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-024a61ee]{height:28px;width:80px;border-radius:6px;background:var(--el-fill-color-light)}.list-item[data-v-024a61ee]{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-024a61ee]{display:flex;align-items:center}.list-col-checkbox[data-v-024a61ee],.list-col-preview[data-v-024a61ee]{justify-content:center}@media (max-width:768px){.list-item[data-v-024a61ee]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-024a61ee],.list-col-channel-name[data-v-024a61ee],.list-col-channel[data-v-024a61ee],.list-col-date[data-v-024a61ee],.list-col-size[data-v-024a61ee],.list-col-tags[data-v-024a61ee]{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}#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-8a2e65f0]{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-8a2e65f0] .el-container,[data-v-8a2e65f0] .el-main{overflow:visible}[data-v-8a2e65f0] .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-8a2e65f0]{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-8a2e65f0]{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-8a2e65f0]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-8a2e65f0]{font-size:.95em}.header-content .actions[data-v-8a2e65f0]{gap:10px}.search-card[data-v-8a2e65f0] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-8a2e65f0] .el-input__wrapper{padding:0 10px}.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:65vw}}.header-content[data-v-8a2e65f0]: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-8a2e65f0]: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-8a2e65f0]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-8a2e65f0]{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-8a2e65f0]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-8a2e65f0]{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-8a2e65f0]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-8a2e65f0]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-8a2e65f0]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-8a2e65f0]{font-size:9px}}.header-content .actions[data-v-8a2e65f0]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-8a2e65f0]{margin-top:10px}}.header-content .actions i[data-v-8a2e65f0]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-8a2e65f0]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-8a2e65f0]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-8a2e65f0]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-8a2e65f0]{color:var(--admin-purple)}.batch-action-item-icon[data-v-8a2e65f0]{width:20px;margin-right:5px}.search-card[data-v-8a2e65f0]{margin-left:auto;margin-right:20px}@media (max-width:768px){.search-card[data-v-8a2e65f0]{margin-right:0;margin-left:0;margin-top:10px}}.search-card[data-v-8a2e65f0] .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-8a2e65f0] .el-input__inner{width:300px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-8a2e65f0] .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-8a2e65f0] .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-8a2e65f0] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-8a2e65f0] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-8a2e65f0] .el-input__inner{width:60vw}}.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:400px}@media (max-width:768px){.search-card[data-v-8a2e65f0] .el-input__inner:focus{width:80vw}}.search-icon[data-v-8a2e65f0]{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-8a2e65f0]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-8a2e65f0] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-8a2e65f0]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-8a2e65f0]{margin-top:12vh}}.content[data-v-8a2e65f0]{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}@media (max-width:768px){.content[data-v-8a2e65f0]{grid-template-columns:1fr;grid-template-rows:none}}.list-view[data-v-8a2e65f0]{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-8a2e65f0]{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-8a2e65f0]{display:flex;align-items:center}.list-col-checkbox[data-v-8a2e65f0]{justify-content:center;min-width:40px}.custom-checkbox[data-v-8a2e65f0]{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-8a2e65f0]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-8a2e65f0],.custom-checkbox.indeterminate[data-v-8a2e65f0]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-8a2e65f0]{font-size:10px;color:#fff}@media (max-width:768px){.list-header[data-v-8a2e65f0]{display:none}}.pagination-container[data-v-8a2e65f0]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-8a2e65f0]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-8a2e65f0] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .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-8a2e65f0] .btn-next,.pagination-container[data-v-8a2e65f0] .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-8a2e65f0] .btn-next:hover,.pagination-container[data-v-8a2e65f0] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-8a2e65f0]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-8a2e65f0]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-8a2e65f0]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-8a2e65f0]{width:50px}.page-jump .jump-input[data-v-8a2e65f0] .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-8a2e65f0] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-8a2e65f0]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-8a2e65f0]{order:0}.pagination-right[data-v-8a2e65f0]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-8a2e65f0]{width:45px}}.refresh-btn[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}[data-v-8a2e65f0] .btn-prev{left:8px}[data-v-8a2e65f0] .btn-next,[data-v-8a2e65f0] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-8a2e65f0] .btn-next{right:8px}@media (min-width:768px){[data-v-8a2e65f0] .el-pagination.is-background .btn-next,[data-v-8a2e65f0] .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-8a2e65f0] .el-pagination.is-background .btn-next:hover,[data-v-8a2e65f0] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-8a2e65f0]{margin:0 3px}.breadcrumb[data-v-8a2e65f0]{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-8a2e65f0]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-8a2e65f0]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-8a2e65f0]:hover{color:var(--admin-purple)}[data-v-8a2e65f0] .el-breadcrumb__item{cursor:pointer}[data-v-8a2e65f0] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-8a2e65f0]{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-8a2e65f0]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-8a2e65f0]{font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-8a2e65f0]{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-8a2e65f0]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-8a2e65f0]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-8a2e65f0]{display:flex}.desktop-only[data-v-8a2e65f0]{display:none!important}.breadcrumb-container[data-v-8a2e65f0]{padding:0;margin-left:0}} \ No newline at end of file diff --git a/css/675.850ca348.css.gz b/css/675.850ca348.css.gz deleted file mode 100644 index 48e52279670834d63d4560daedfe787af5ed84d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13265 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.el-popper__arrow:before{background:none;border:none}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:root{--bg-color:linear-gradient(90deg,#efe8e8,#e4f8ff);--popper-bg-color:hsla(0,0%,100%,.8);--popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--image-preview-filter:brightness(1);--text-bg-color:rgba(0,0,0,.1);--background-image-filter:brightness(1);--upload-list-card-bg-color:hsla(0,0%,100%,.7);--upload-list-card-border:1px solid #327ecc50;--upload-list-card-box-shadow:1px 2px 5px 1px #327ecc50;--upload-list-item-border:1px solid #a5bef7;--upload-list-dashboard-bg-color:hsla(0,0%,100%,.7);--upload-list-dashboard-shadow:0 2px 10px rgba(0,0,0,.1);--upload-list-file-icon-color:#327ecc;--el-upload-dragger-bg-color:hsla(0,0%,100%,.6);--el-upload-dragger-border:3px dashed #409eff;--el-upload-dragger-border-color:#409eff;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #409eff;--el-upload-dragger-uniform-color:#409eff;--paste-card-textarea-border-color:#409eff;--paste-card-textarea-box-shadow:0 0 6px 1px #409eff;--el-icon--upload-color:#1f8bf8;--upload-text-color:rgba(58,58,58,.8);--upload-header-color:rgba(58,58,58,.8);--upload-main-title-color:linear-gradient(90deg,#a1e3cc,#78aeec);--modern-action-group-bg:rgba(64,158,255,.08);--modern-action-group-border:rgba(64,158,255,.15);--logo-glow-color:#409eff;--modern-action-group-shadow:rgba(0,0,0,.06);--modern-action-group-hover-bg:rgba(64,158,255,.12);--modern-action-group-hover-shadow:rgba(64,158,255,.15);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.08),rgba(64,158,255,.03));--file-name-border:rgba(64,158,255,.12);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.06));--file-name-hover-border:rgba(64,158,255,.2);--upload-list-item-bg:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));--upload-list-item-border-color:rgba(64,158,255,.1);--upload-list-item-shadow:rgba(0,0,0,.04);--upload-list-item-hover-border:rgba(64,158,255,.25);--upload-list-item-hover-shadow:rgba(64,158,255,.12);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.06),transparent);--toolbar-button-bg-color:hsla(0,0%,100%,.5);--toolbar-button-shadow:1px 2px 4px rgba(0,0,0,.3);--toolbar-button-shadow-hover:1px 2px 4px rgba(0,0,0,.5);--toolbar-button-color:#327ecc;--page-footer-text-color:rgba(58,58,58,.8);--page-footer-name-color:rgba(12,76,105,.8);--login-container-bg-color:hsla(0,0%,100%,.6);--password-input-bg-color:hsla(0,0%,100%,.9);--password-input-border:1px solid #dcdfe6;--login-title-color:#000;--login-container-box-shadow:0 0 12px rgba(0,0,0,.12);--login-container-hover-box-shadow:0 0 12px 4px rgba(0,0,0,.24);--login-submit-btn-bg-color:#487cb0e8;--login-title-glow-color:rgba(52,152,219,.5);--login-input-underline-color:#5b9bd3;--login-input-underline-secondary-color:#7ba9d8;--login-input-label-focus-color:#5b9bd3;--dialog-bg-color:hsla(0,0%,100%,.7);--dialog-box-shadow:0 0 10px 2px rgba(0,0,0,.1);--tabs-dropdown-popper-bg-color:hsla(0,0%,100%,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--admin-header-content-bg-color:hsla(0,0%,100%,.75);--admin-header-content-hover-bg-color:hsla(0,0%,100%,.85);--admin-header-content-border-bottom:1px solid rgba(0,0,0,.1);--admin-header-content-box-shadow:0 4px 6px rgba(0,0,0,.1);--admin-header-content-hover-box-shadow:0 6px 10px rgba(0,0,0,.2);--admin-container-bg-color:linear-gradient(90deg,#fdf3f6,#e4f8ff);--admin-container-color:#333;--admin-dashborad-stats-bg-color:hsla(0,0%,100%,.9);--admin-dashborad-stats-hover-bg-color:#f0eaf8;--admin-dashboard-search-card-bg-color:hsla(0,0%,100%,.9);--admin-dashboard-stats-shadow:0 2px 4px rgba(0,0,0,.05);--admin-dashboard-stats-hover-shadow:0 4px 6px rgba(0,0,0,.1);--admin-dashboard-search-card-box-shadow:0 2px 6px rgba(0,0,0,.1);--admin-dashboard-btn-color:#000;--admin-dashboard-btn-bg-color:hsla(0,0%,100%,.3);--admin-dashboard-btn-shadow:0 2px 4px rgba(0,0,0,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px rgba(0,0,0,.3);--admin-dashboard-imgcard-bg-color:hsla(0,0%,100%,.6);--admin-dashboard-imgcard-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#dcdfe6;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#f5f7fa;--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.1);--admin-cuscfg-table-bg-color:hsla(0,0%,100%,.95);--admin-syscfg-tabs-border-color:#3c3c3c4c;--admin-purple:#b39ddb;--theme-toggle-color:#327ecc;--theme-toggle-bg-color:#327ecc;--admin-theme-toggle-color:#000;--admin-theme-toggle-bg-color:#000;--not-found-title-text-color:linear-gradient(90deg,#6b9788,#6285ac)}.dark{--bg-color:linear-gradient(90deg,#1c1c1c,#000);--popper-bg-color:rgba(0,0,0,.8);--popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--image-preview-filter:brightness(0.8);--text-bg-color:hsla(0,0%,100%,.1);--background-image-filter:brightness(0.6);--upload-list-card-bg-color:rgba(0,0,0,.7);--upload-list-card-border:1px solid #8fadc8;--upload-list-card-box-shadow:-1px 2px 4px #c1ddf5ae;--upload-list-item-border:1px solid #8fadc8;--upload-list-dashboard-bg-color:rgba(0,0,0,.7);--upload-list-dashboard-shadow:0 2px 10px hsla(0,0%,100%,.1);--upload-list-file-icon-color:#8fadc8;--el-upload-dragger-bg-color:rgba(0,0,0,.6);--el-upload-dragger-border:3px dashed #8fadc8;--el-upload-dragger-border-color:#8fadc8;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #8fadc8;--el-upload-dragger-uniform-color:#8fadc8;--paste-card-textarea-border-color:#8fadc8;--paste-card-textarea-box-shadow:0 0 6px 1px #8fadc8;--el-icon--upload-color:#ffebcd;--upload-text-color:#faebd7;--upload-header-color:#ffebcd;--upload-main-title-color:linear-gradient(90deg,#effac3,#f3a060);--toolbar-button-bg-color:rgba(0,0,0,.7);--toolbar-button-shadow:-1px 2px 4px hsla(0,0%,100%,.3);--toolbar-button-shadow-hover:-1px 2px 4px hsla(0,0%,100%,.5);--toolbar-button-color:#bedefd;--modern-action-group-bg:rgba(64,158,255,.12);--modern-action-group-border:rgba(64,158,255,.2);--logo-glow-color:#8fadc8;--modern-action-group-shadow:rgba(0,0,0,.2);--modern-action-group-hover-bg:rgba(64,158,255,.18);--modern-action-group-hover-shadow:rgba(64,158,255,.25);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.05));--file-name-border:rgba(64,158,255,.18);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.18),rgba(64,158,255,.08));--file-name-hover-border:rgba(64,158,255,.3);--upload-list-item-bg:linear-gradient(135deg,rgba(30,30,30,.9),rgba(40,40,40,.7));--upload-list-item-border-color:rgba(64,158,255,.15);--upload-list-item-shadow:rgba(0,0,0,.15);--upload-list-item-hover-border:rgba(64,158,255,.35);--upload-list-item-hover-shadow:rgba(64,158,255,.2);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.1),transparent);--page-footer-text-color:#f0f8ff;--page-footer-name-color:#faebd7;--login-container-bg-color:rgba(0,0,0,.6);--password-input-bg-color:rgba(77,77,77,.8);--password-input-border:1px solid #919191;--login-title-color:#f0f8ff;--login-container-box-shadow:-3px 2px 12px hsla(0,0%,100%,.12);--login-container-hover-box-shadow:-3px 2px 12px 4px hsla(0,0%,100%,.24);--login-submit-btn-bg-color:#8fadc8b4;--login-title-glow-color:rgba(143,173,200,.7);--login-input-underline-color:#a3c5e5;--login-input-underline-secondary-color:#b8d0e8;--login-input-label-focus-color:#a3c5e5;--dialog-bg-color:rgba(0,0,0,.8);--dialog-box-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--tabs-dropdown-popper-bg-color:rgba(0,0,0,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--admin-header-content-bg-color:rgba(0,0,0,.75);--admin-header-content-hover-bg-color:rgba(0,0,0,.85);--admin-header-content-border-bottom:1px solid hsla(0,0%,100%,.1);--admin-header-content-box-shadow:0 4px 6px hsla(0,0%,100%,.1);--admin-header-content-hover-box-shadow:0 6px 10px hsla(0,0%,100%,.2);--admin-container-bg-color:linear-gradient(90deg,#464545,#2d2d2d);--admin-container-color:#f0f0f0;--admin-dashborad-stats-bg-color:rgba(0,0,0,.9);--admin-dashborad-stats-hover-bg-color:#1e1e1e;--admin-dashboard-stats-shadow:0 2px 4px hsla(0,0%,100%,.1);--admin-dashboard-stats-hover-shadow:0 4px 6px hsla(0,0%,100%,.15);--admin-dashboard-search-card-bg-color:rgba(0,0,0,.9);--admin-dashboard-search-card-box-shadow:0 2px 6px hsla(0,0%,100%,.1);--admin-dashboard-btn-color:#f0f0f0;--admin-dashboard-btn-bg-color:rgba(0,0,0,.3);--admin-dashboard-btn-shadow:0 2px 4px hsla(0,0%,100%,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px hsla(0,0%,100%,.3);--admin-dashboard-imgcard-bg-color:rgba(0,0,0,.6);--admin-dashboard-imgcard-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-bg-color:#2d2d2d;--admin-dashboard-tag-suggestion-border-color:#555;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#3a3a3a;--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.3),0 0 1px 1px hsla(0,0%,100%,.05);--admin-cuscfg-table-bg-color:rgba(45,45,45,.95);--admin-syscfg-tabs-border-color:#cfcccc47;--theme-toggle-color:#bedefd;--theme-toggle-bg-color:#bedefd;--admin-theme-toggle-color:#fff;--admin-theme-toggle-bg-color:#fcfcfc;--not-found-title-text-color:linear-gradient(90deg,#effac3,#f3a060)}.el-message{border-radius:50px!important;border:none!important;padding:10px 30px!important;box-shadow:0 4px 16px rgba(0,0,0,.2)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background-color:rgba(40,40,40,.85)!important;min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:#fff!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;letter-spacing:.5px}.el-message--success .el-message__icon{color:#67c23a!important}.el-message--warning .el-message__icon{color:#e6a23c!important}.el-message--error .el-message__icon{color:#f56c6c!important}.dark .el-message{background-color:hsla(0,0%,100%,.2)!important;border:1px solid hsla(0,0%,100%,.1)!important;box-shadow:0 4px 16px rgba(0,0,0,.4)!important}.dialog-section{margin-bottom:24px;background:var(--el-fill-color-lighter);border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:14px;transition:color .2s}.section-help-icon:hover{color:var(--el-color-primary)}.section-content{display:flex;flex-direction:column;gap:16px}.radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.radio-card-group .radio-card.is-checked{background:linear-gradient(135deg,rgba(64,158,255,.1),rgba(56,189,248,.05));border-color:var(--el-color-primary)}.radio-card-group .el-radio__input{display:none}.radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color-lighter)}.setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.setting-input{width:60%;max-width:250px}.dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.confirm-btn{min-width:100px;border-radius:8px}@media (max-width:768px){.el-message{padding:8px 18px!important;border-radius:30px!important}.el-message .el-message__icon{font-size:14px!important}.el-message .el-message__content{font-size:13px!important}.dialog-section{padding:12px}.radio-card-group{flex-direction:column}.radio-card-group .radio-card{width:100%;text-align:center}.setting-item{flex-direction:column;align-items:flex-start;gap:10px}.setting-item .radio-card-group.compact{width:100%}.setting-input{width:100%;max-width:none}.radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;justify-content:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}}.slider-item{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider{flex:1;min-width:0}.slider-input{width:80px!important;flex-shrink:0}.slider-input .el-input__wrapper{padding:0 8px}.slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.slider-wrapper{gap:8px;width:100%}.slider-input{width:80px!important}.setting-input{width:100%!important;max-width:none!important}.dialog-section{overflow:hidden}.radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.radio-card-group.grid-2x2 .radio-card{padding:10px 8px;font-size:13px}}.inline-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon:hover{color:var(--el-color-primary)}.radio-card-group.compact{gap:8px}.radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}.radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:20px}.radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.radio-card.is-checked .radio-icon{opacity:1}.el-dialog,.el-message-box{border-radius:16px!important;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.2)!important;border:1px solid hsla(0,0%,100%,.5);background-color:hsla(0,0%,100%,.85)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.5) 20%,rgba(156,163,175,.8) 50%,rgba(156,163,175,.5) 80%,transparent)}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px}.el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.8),rgba(156,163,175,.5) 30%,transparent 80%)}.el-dialog__body,.el-message-box__content{padding:20px!important}.el-dialog__footer,.el-message-box__btns{border-top:none;padding:12px 20px!important;background-color:transparent}.dark .el-dialog,.dark .el-message-box{background-color:rgba(30,30,30,.75)!important;border:1px solid hsla(0,0%,100%,.08)!important;box-shadow:0 12px 32px rgba(0,0,0,.5)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.3) 20%,rgba(156,163,175,.5) 50%,rgba(156,163,175,.3) 80%,transparent)}.dark .el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.5),rgba(156,163,175,.3) 30%,transparent 80%)}.dark .el-dialog__footer,.dark .el-message-box__btns{border-top:none;background-color:transparent}.dark .el-dialog__title,.dark .el-message-box__title{color:#e5eaf3}.dark .el-message-box__content{color:#cfd3dc}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:12px;border:none;background-color:var(--popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--popper-shadow)}.el-dropdown__popper.el-popper .el-dropdown-menu,.el-dropdown__popper.el-popper .el-dropdown-menu__item{background:none;border:none}.el-popper.is-light>.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important} \ No newline at end of file diff --git a/css/app.da21a01c.css.gz b/css/app.da21a01c.css.gz deleted file mode 100644 index aa0f27106773bcf7e63aef41814a9ac487ec058f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3720 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 m#- diff --git a/css/app.ee9a7bf2.css b/css/app.ee9a7bf2.css new file mode 100644 index 0000000..d00f702 --- /dev/null +++ b/css/app.ee9a7bf2.css @@ -0,0 +1 @@ +#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}nav{padding:30px}nav a{font-weight:700;color:#2c3e50}nav a.router-link-exact-active{color:#42b983}body{margin:0;padding:0;background-color:#f8f8f8}:focus-visible{outline:none}.el-dropdown__popper.el-popper{background-color:hsla(0,0%,100%,.8);box-shadow:0 0 10px 2px rgba(0,0,0,.1)}.el-popper.is-light>.el-popper__arrow:before{background:none;border:none}*{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:root{--bg-color:linear-gradient(90deg,#efe8e8,#e4f8ff);--popper-bg-color:hsla(0,0%,100%,.8);--popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--image-preview-filter:brightness(1);--text-bg-color:rgba(0,0,0,.1);--background-image-filter:brightness(1);--upload-list-card-bg-color:hsla(0,0%,100%,.7);--upload-list-card-border:1px solid #327ecc50;--upload-list-card-box-shadow:1px 2px 5px 1px #327ecc50;--upload-list-item-border:1px solid #a5bef7;--upload-list-dashboard-bg-color:hsla(0,0%,100%,.7);--upload-list-dashboard-shadow:0 2px 10px rgba(0,0,0,.1);--upload-list-file-icon-color:#327ecc;--el-upload-dragger-bg-color:hsla(0,0%,100%,.6);--el-upload-dragger-border:3px dashed #409eff;--el-upload-dragger-border-color:#409eff;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #409eff;--el-upload-dragger-uniform-color:#409eff;--paste-card-textarea-border-color:#409eff;--paste-card-textarea-box-shadow:0 0 6px 1px #409eff;--el-icon--upload-color:#1f8bf8;--upload-text-color:rgba(58,58,58,.8);--upload-header-color:rgba(58,58,58,.8);--upload-main-title-color:linear-gradient(90deg,#a1e3cc,#78aeec);--modern-action-group-bg:rgba(64,158,255,.08);--modern-action-group-border:rgba(64,158,255,.15);--logo-glow-color:#409eff;--modern-action-group-shadow:rgba(0,0,0,.06);--modern-action-group-hover-bg:rgba(64,158,255,.12);--modern-action-group-hover-shadow:rgba(64,158,255,.15);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.08),rgba(64,158,255,.03));--file-name-border:rgba(64,158,255,.12);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.06));--file-name-hover-border:rgba(64,158,255,.2);--upload-list-item-bg:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));--upload-list-item-border-color:rgba(64,158,255,.1);--upload-list-item-shadow:rgba(0,0,0,.04);--upload-list-item-hover-border:rgba(64,158,255,.25);--upload-list-item-hover-shadow:rgba(64,158,255,.12);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.06),transparent);--toolbar-button-bg-color:hsla(0,0%,100%,.5);--toolbar-button-shadow:1px 2px 4px rgba(0,0,0,.3);--toolbar-button-shadow-hover:1px 2px 4px rgba(0,0,0,.5);--toolbar-button-color:#327ecc;--page-footer-text-color:rgba(58,58,58,.8);--page-footer-name-color:rgba(12,76,105,.8);--login-container-bg-color:hsla(0,0%,100%,.6);--password-input-bg-color:hsla(0,0%,100%,.9);--password-input-border:1px solid #dcdfe6;--login-title-color:#000;--login-container-box-shadow:0 0 12px rgba(0,0,0,.12);--login-container-hover-box-shadow:0 0 12px 4px rgba(0,0,0,.24);--login-submit-btn-bg-color:#487cb0e8;--login-title-glow-color:rgba(52,152,219,.5);--login-input-underline-color:#5b9bd3;--login-input-underline-secondary-color:#7ba9d8;--login-input-label-focus-color:#5b9bd3;--dialog-bg-color:hsla(0,0%,100%,.7);--dialog-box-shadow:0 0 10px 2px rgba(0,0,0,.1);--tabs-dropdown-popper-bg-color:hsla(0,0%,100%,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--admin-header-content-bg-color:hsla(0,0%,100%,.75);--admin-header-content-hover-bg-color:hsla(0,0%,100%,.85);--admin-header-content-border-bottom:1px solid rgba(0,0,0,.1);--admin-header-content-box-shadow:0 4px 6px rgba(0,0,0,.1);--admin-header-content-hover-box-shadow:0 6px 10px rgba(0,0,0,.2);--admin-container-bg-color:linear-gradient(90deg,#fdf3f6,#e4f8ff);--admin-container-color:#333;--admin-dashborad-stats-bg-color:hsla(0,0%,100%,.9);--admin-dashborad-stats-hover-bg-color:#f0eaf8;--admin-dashboard-search-card-bg-color:hsla(0,0%,100%,.9);--admin-dashboard-stats-shadow:0 2px 4px rgba(0,0,0,.05);--admin-dashboard-stats-hover-shadow:0 4px 6px rgba(0,0,0,.1);--admin-dashboard-search-card-box-shadow:0 2px 6px rgba(0,0,0,.1);--admin-dashboard-btn-color:#000;--admin-dashboard-btn-bg-color:hsla(0,0%,100%,.3);--admin-dashboard-btn-shadow:0 2px 4px rgba(0,0,0,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px rgba(0,0,0,.3);--admin-dashboard-imgcard-bg-color:hsla(0,0%,100%,.6);--admin-dashboard-imgcard-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#dcdfe6;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#f5f7fa;--skeleton-bg-color:#e0e0e0;--skeleton-shimmer-color:hsla(0,0%,100%,.5);--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.1);--admin-cuscfg-table-bg-color:hsla(0,0%,100%,.95);--admin-syscfg-tabs-border-color:#3c3c3c4c;--admin-purple:#b39ddb;--theme-toggle-color:#327ecc;--theme-toggle-bg-color:#327ecc;--admin-theme-toggle-color:#000;--admin-theme-toggle-bg-color:#000;--not-found-title-text-color:linear-gradient(90deg,#6b9788,#6285ac)}.dark{--bg-color:linear-gradient(90deg,#1c1c1c,#000);--popper-bg-color:rgba(0,0,0,.8);--popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--image-preview-filter:brightness(0.8);--text-bg-color:hsla(0,0%,100%,.1);--background-image-filter:brightness(0.6);--upload-list-card-bg-color:rgba(0,0,0,.7);--upload-list-card-border:1px solid #8fadc8;--upload-list-card-box-shadow:-1px 2px 4px #c1ddf5ae;--upload-list-item-border:1px solid #8fadc8;--upload-list-dashboard-bg-color:rgba(0,0,0,.7);--upload-list-dashboard-shadow:0 2px 10px hsla(0,0%,100%,.1);--upload-list-file-icon-color:#8fadc8;--el-upload-dragger-bg-color:rgba(0,0,0,.6);--el-upload-dragger-border:3px dashed #8fadc8;--el-upload-dragger-border-color:#8fadc8;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #8fadc8;--el-upload-dragger-uniform-color:#8fadc8;--paste-card-textarea-border-color:#8fadc8;--paste-card-textarea-box-shadow:0 0 6px 1px #8fadc8;--el-icon--upload-color:#ffebcd;--upload-text-color:#faebd7;--upload-header-color:#ffebcd;--upload-main-title-color:linear-gradient(90deg,#effac3,#f3a060);--toolbar-button-bg-color:rgba(0,0,0,.7);--toolbar-button-shadow:-1px 2px 4px hsla(0,0%,100%,.3);--toolbar-button-shadow-hover:-1px 2px 4px hsla(0,0%,100%,.5);--toolbar-button-color:#bedefd;--modern-action-group-bg:rgba(64,158,255,.12);--modern-action-group-border:rgba(64,158,255,.2);--logo-glow-color:#8fadc8;--modern-action-group-shadow:rgba(0,0,0,.2);--modern-action-group-hover-bg:rgba(64,158,255,.18);--modern-action-group-hover-shadow:rgba(64,158,255,.25);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.05));--file-name-border:rgba(64,158,255,.18);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.18),rgba(64,158,255,.08));--file-name-hover-border:rgba(64,158,255,.3);--upload-list-item-bg:linear-gradient(135deg,rgba(30,30,30,.9),rgba(40,40,40,.7));--upload-list-item-border-color:rgba(64,158,255,.15);--upload-list-item-shadow:rgba(0,0,0,.15);--upload-list-item-hover-border:rgba(64,158,255,.35);--upload-list-item-hover-shadow:rgba(64,158,255,.2);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.1),transparent);--page-footer-text-color:#f0f8ff;--page-footer-name-color:#faebd7;--login-container-bg-color:rgba(0,0,0,.6);--password-input-bg-color:rgba(77,77,77,.8);--password-input-border:1px solid #919191;--login-title-color:#f0f8ff;--login-container-box-shadow:-3px 2px 12px hsla(0,0%,100%,.12);--login-container-hover-box-shadow:-3px 2px 12px 4px hsla(0,0%,100%,.24);--login-submit-btn-bg-color:#8fadc8b4;--login-title-glow-color:rgba(143,173,200,.7);--login-input-underline-color:#a3c5e5;--login-input-underline-secondary-color:#b8d0e8;--login-input-label-focus-color:#a3c5e5;--dialog-bg-color:rgba(0,0,0,.8);--dialog-box-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--tabs-dropdown-popper-bg-color:rgba(0,0,0,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--admin-header-content-bg-color:rgba(0,0,0,.75);--admin-header-content-hover-bg-color:rgba(0,0,0,.85);--admin-header-content-border-bottom:1px solid hsla(0,0%,100%,.1);--admin-header-content-box-shadow:0 4px 6px hsla(0,0%,100%,.1);--admin-header-content-hover-box-shadow:0 6px 10px hsla(0,0%,100%,.2);--admin-container-bg-color:linear-gradient(90deg,#464545,#2d2d2d);--admin-container-color:#f0f0f0;--admin-dashborad-stats-bg-color:rgba(0,0,0,.9);--admin-dashborad-stats-hover-bg-color:#1e1e1e;--admin-dashboard-stats-shadow:0 2px 4px hsla(0,0%,100%,.1);--admin-dashboard-stats-hover-shadow:0 4px 6px hsla(0,0%,100%,.15);--admin-dashboard-search-card-bg-color:rgba(0,0,0,.9);--admin-dashboard-search-card-box-shadow:0 2px 6px hsla(0,0%,100%,.1);--admin-dashboard-btn-color:#f0f0f0;--admin-dashboard-btn-bg-color:rgba(0,0,0,.3);--admin-dashboard-btn-shadow:0 2px 4px hsla(0,0%,100%,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px hsla(0,0%,100%,.3);--admin-dashboard-imgcard-bg-color:rgba(0,0,0,.6);--admin-dashboard-imgcard-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-bg-color:#2d2d2d;--admin-dashboard-tag-suggestion-border-color:#555;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#3a3a3a;--skeleton-bg-color:#3a3a3a;--skeleton-shimmer-color:hsla(0,0%,100%,.15);--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.3),0 0 1px 1px hsla(0,0%,100%,.05);--admin-cuscfg-table-bg-color:rgba(45,45,45,.95);--admin-syscfg-tabs-border-color:#cfcccc47;--theme-toggle-color:#bedefd;--theme-toggle-bg-color:#bedefd;--admin-theme-toggle-color:#fff;--admin-theme-toggle-bg-color:#fcfcfc;--not-found-title-text-color:linear-gradient(90deg,#effac3,#f3a060)}.el-message{border-radius:50px!important;border:none!important;padding:10px 30px!important;box-shadow:0 4px 16px rgba(0,0,0,.2)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background-color:rgba(40,40,40,.85)!important;min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:#fff!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;letter-spacing:.5px}.el-message--success .el-message__icon{color:#67c23a!important}.el-message--warning .el-message__icon{color:#e6a23c!important}.el-message--error .el-message__icon{color:#f56c6c!important}.dark .el-message{background-color:hsla(0,0%,100%,.2)!important;border:1px solid hsla(0,0%,100%,.1)!important;box-shadow:0 4px 16px rgba(0,0,0,.4)!important}.dialog-section{margin-bottom:24px;background:var(--el-fill-color-lighter);border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:14px;transition:color .2s}.section-help-icon:hover{color:var(--el-color-primary)}.section-content{display:flex;flex-direction:column;gap:16px}.radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.radio-card-group .radio-card.is-checked{background:linear-gradient(135deg,rgba(64,158,255,.1),rgba(56,189,248,.05));border-color:var(--el-color-primary)}.radio-card-group .el-radio__input{display:none}.radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color-lighter)}.setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.setting-input{width:60%;max-width:250px}.dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.confirm-btn{min-width:100px;border-radius:8px}@media (max-width:768px){.el-message{padding:8px 18px!important;border-radius:30px!important}.el-message .el-message__icon{font-size:14px!important}.el-message .el-message__content{font-size:13px!important}.dialog-section{padding:12px}.radio-card-group{flex-direction:column}.radio-card-group .radio-card{width:100%;text-align:center}.setting-item{flex-direction:column;align-items:flex-start;gap:10px}.setting-item .radio-card-group.compact{width:100%}.setting-input{width:100%;max-width:none}.radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;justify-content:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}}.slider-item{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider{flex:1;min-width:0}.slider-input{width:80px!important;flex-shrink:0}.slider-input .el-input__wrapper{padding:0 8px}.slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.slider-wrapper{gap:8px;width:100%}.slider-input{width:80px!important}.setting-input{width:100%!important;max-width:none!important}.dialog-section{overflow:hidden}.radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.radio-card-group.grid-2x2 .radio-card{padding:10px 8px;font-size:13px}}.inline-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon:hover{color:var(--el-color-primary)}.radio-card-group.compact{gap:8px}.radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}.radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:20px}.radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.radio-card.is-checked .radio-icon{opacity:1}.el-dialog,.el-message-box{border-radius:16px!important;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.2)!important;border:1px solid hsla(0,0%,100%,.5);background-color:hsla(0,0%,100%,.85)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.5) 20%,rgba(156,163,175,.8) 50%,rgba(156,163,175,.5) 80%,transparent)}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px}.el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.8),rgba(156,163,175,.5) 30%,transparent 80%)}.el-dialog__body,.el-message-box__content{padding:20px!important}.el-dialog__footer,.el-message-box__btns{border-top:none;padding:12px 20px!important;background-color:transparent}.dark .el-dialog,.dark .el-message-box{background-color:rgba(30,30,30,.75)!important;border:1px solid hsla(0,0%,100%,.08)!important;box-shadow:0 12px 32px rgba(0,0,0,.5)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.3) 20%,rgba(156,163,175,.5) 50%,rgba(156,163,175,.3) 80%,transparent)}.dark .el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.5),rgba(156,163,175,.3) 30%,transparent 80%)}.dark .el-dialog__footer,.dark .el-message-box__btns{border-top:none;background-color:transparent}.dark .el-dialog__title,.dark .el-message-box__title{color:#e5eaf3}.dark .el-message-box__content{color:#cfd3dc}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:12px;border:none;background-color:var(--popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--popper-shadow)}.el-dropdown__popper.el-popper .el-dropdown-menu,.el-dropdown__popper.el-popper .el-dropdown-menu__item{background:none;border:none}.el-popper.is-light>.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important} \ No newline at end of file diff --git a/css/app.ee9a7bf2.css.gz b/css/app.ee9a7bf2.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9cb420f179c71f0c0e396172fd33821fd8b98815 GIT binary patch literal 3750 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 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 837611f0a4674f31b72f45f520dead411025ca90..b96aa1467c83aa75b932961367a5c1134932fbd6 100644 GIT binary patch literal 511 zcmVHT?)68z_bW>rNYnVY>~oL|bZP zQIlu~{`W)TtZP~ny$B$|_xK)3$#;e{&k@1$;2XJr!K={MLNwB%GL0ON6=hwrbvtL+ z)&?i1u{Z=P7aTj~i>#H$`a(3)yRe0Xz7|eX5MUE_wWvJxRL0PsRHzs|7EGhI#oN_` z%G+1UK$E9bi}&5SU7w$yIx(1aa*^F0`Do_53iF6?KlGo+77Dn7fefYqo%0BmGP}@2 z^ol!5!ztqy=N%=JU(l_Ne5(_d6}Un5PeSc!G?1B+dOmhFvZeHb_?r`rWXB$x6XCL2 zl5(*K20Ki9%N-^GIq6zd54qBI4BKMDU?}DC=Jve3zPj3!4_P#_TA*)Hs2I!Zs}0^> z=!<8-!-|e8(fN6|_2u;?n)RmCIg4eJnP-pLBC>di-Zw(rsGGL?@EWFCF25x+H!{$p z15OnB<|m#dgiI;T(2flGFtOim=rNYrVY>~oL|bZP zQIlu~{`(2&$=HXNCqeVe(fDdx|>^COpMp8JLdyv3|h3EKXg^;=d4WN3i;M;0LwZj&)hgYK!AX{tK&`gBsWa007Qf B`Z@pr diff --git a/js/675.63e531de.js b/js/278.3023ac4f.js similarity index 61% rename from js/675.63e531de.js rename to js/278.3023ac4f.js index 0a04fd4..9b0374b 100644 --- a/js/675.63e531de.js +++ b/js/278.3023ac4f.js @@ -1,2 +1,2 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[675],{415:function(e,t,i){"use strict";i(5331),i(3565)},2388:function(e,t,i){"use strict";function a(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}}i.d(t,{G:function(){return a}})},2907:function(e,t,i){"use strict";i(5331),i(6808),i(6711)},3565:function(e,t,i){"use strict";i(5331)},4396:function(e,t,i){"use strict";i(5331),i(4885)},4813:function(e,t,i){i(4114),i(6573),i(8100),i(7936),i(8111),i(2489),i(7588),i(9577),i(1549),i(9797),i(9631),i(5623),i(9848),function(t){e.exports=t()}(function(){return function e(t,i,a){function n(r,o){if(!i[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=i[r]={exports:{}};t[r][0].call(d.exports,function(e){var i=t[r][1][e];return n(i||e)},d,d.exports,e,t,i,a)}return i[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|i>>4,l=1>6:64,c=2>4,i=(15&r)<<4|(o=s.indexOf(e.charAt(c++)))>>2,a=(3&o)<<6|(l=s.indexOf(e.charAt(c++))),u[d++]=t,64!==o&&(u[d++]=i),64!==l&&(u[d++]=a);return u}},{"./support":30,"./utils":32}],2:[function(e,t,i){"use strict";var a=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,i,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=i,this.compression=a,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(a.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(a.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,i){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(i)).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,i){"use strict";var a=e("./stream/GenericWorker");i.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},i.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,i){"use strict";var a=e("./utils"),n=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var a=0;a<8;a++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==a.getTypeOf(e)?function(e,t,i,a){var s=n,r=a+i;e^=-1;for(var o=a;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,i,a){var s=n,r=a+i;e^=-1;for(var o=a;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,i){"use strict";i.base64=!1,i.binary=!1,i.dir=!1,i.createFolders=!0,i.date=null,i.compression=null,i.compressionOptions=null,i.comment=null,i.unixPermissions=null,i.dosPermissions=null},{}],6:[function(e,t,i){"use strict";var a=null;a="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:a}},{lie:37}],7:[function(e,t,i){"use strict";var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=a?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}i.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})}},i.compressWorker=function(e){return new l("Deflate",e)},i.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,i){"use strict";function a(e,t){var i,a="";for(i=0;i>>=8;return a}function n(e,t,i,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)),_=s.transformTo("string",o.utf8encode(v)),y=b.length!==f.name.length,w=_.length!==v.length,F="",C="",T="",x=f.dir,S=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!i||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var E=0;t&&(E|=8),p||!y&&!w||(E|=2048);var A=0,I=0;x&&(A|=16),"UNIX"===r?(I=798,A|=function(e,t){var i=e;return e||(i=t?16893:33204),(65535&i)<<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(),y&&(C=a(1,1)+a(l(g),4)+b,F+="up"+a(C.length,2)+C),w&&(T=a(1,1)+a(l(k),4)+_,F+="uc"+a(T.length,2)+T);var D="";return D+="\n\0",D+=a(E,2),D+=m.magic,D+=a(h,2),D+=a(u,2),D+=a(L.crc32,4),D+=a(L.compressedSize,4),D+=a(L.uncompressedSize,4),D+=a(g.length,2),D+=a(F.length,2),{fileRecord:c.LOCAL_FILE_HEADER+D+g+F,dirRecord:c.CENTRAL_FILE_HEADER+a(I,2)+D+a(k.length,2)+"\0\0\0\0"+a(A,4)+a(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,i,a){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=i,this.encodeFileName=a,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,i=this.entriesCount,a=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:i?(t+100*(i-a-1))/i: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 i=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:i.fileRecord,meta:{percent:0}})}else this.accumulate=!0},d.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,i=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(i.dirRecord),t)this.push({data:function(e){return c.DATA_DESCRIPTOR+a(e.crc32,4)+a(e.compressedSize,4)+a(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:i.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--)i=(i<<8)+this.byteAt(t);return this.index+=e,i},readString:function(e){return a.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,i){"use strict";var a=e("./Uint8ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("./DataReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("./ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(a.transformTo("uint8array",e)):new s(a.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,i){"use strict";i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,i){"use strict";var a=e("./GenericWorker"),n=e("../utils");function s(e){a.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,a),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,i){"use strict";var a=e("./GenericWorker"),n=e("../crc32");function s(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,a),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,i){"use strict";var a=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}a.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,i){"use strict";var a=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=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.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,a.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.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,i){"use strict";function a(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}a.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 i=0;i "+e:e}},t.exports=a},{}],29:[function(e,t,i){"use strict";var a=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(i,n){var s=[],o=e._internalType,l=e._outputType,c=e._mimeType;e.on("data",function(e,i){s.push(e),t&&t(i)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,i){switch(e){case"blob":return a.newBlob(a.transformTo("arraybuffer",t),i);case"base64":return r.encode(t);default:return a.transformTo(e,t)}}(l,function(e,t){var i,a=0,n=null,s=0;for(i=0;i>>6:(i<65536?t[r++]=224|i>>>12:(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63),t[r++]=128|i>>>6&63),t[r++]=128|63&i);return t}(e)},i.utf8decode=function(e){return n.nodebuffer?a.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,i,n,s,r=e.length,l=new Array(2*r);for(t=i=0;t>10&1023,l[i++]=56320|1023&n)}return l.length!==i&&(l.subarray?l=l.subarray(0,i):l.length=i),a.applyFromCharCode(l)}(e=a.transformTo(n.uint8array?"uint8array":"array",e))},a.inherits(c,r),c.prototype.processChunk=function(e){var t=a.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 i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;0<=i&&128==(192&e[i]);)i--;return i<0||0===i?t:i+o[e[i]]>t?i: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:i.utf8decode(l),meta:e.meta})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=c,a.inherits(d,r),d.prototype.processChunk=function(e){this.push({data:i.utf8encode(e.data),meta:e.meta})},i.Utf8EncodeWorker=d},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,i){"use strict";var a=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var i=0;i>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=a(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,i,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(i<65536?t[r++]=224|i>>>12:(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63),t[r++]=128|i>>>6&63),t[r++]=128|63&i);return t},i.buf2binstring=function(e){return l(e,e.length)},i.binstring2buf=function(e){for(var t=new a.Buf8(e.length),i=0,n=t.length;i>10&1023,c[a++]=56320|1023&n)}return l(c,a)},i.utf8border=function(e,t){var i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;0<=i&&128==(192&e[i]);)i--;return i<0||0===i?t:i+r[e[i]]>t?i:t}},{"./common":41}],43:[function(e,t,i){"use strict";t.exports=function(e,t,i,a){for(var n=65535&e,s=e>>>16&65535,r=0;0!==i;){for(i-=r=2e3>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t,i,n){var s=a,r=n+i;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,i){"use strict";var a,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,_=19,y=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 z(e){return(e<<1)-(4e.avail_out&&(i=e.avail_out),0!==i&&(n.arraySet(e.output,t.pending_buf,t.pending_out,i,e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))}function P(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 O(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function $(e,t){var i,a,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[(i=t)+r]===m&&c[i+r-1]===f&&c[i]===c[s]&&c[++i]===c[s+1]){s+=2,i++;do{}while(c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function R(e){var t,i,a,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=i=e.hash_size;a=e.head[--t],e.head[t]=m<=a?a-m:0,--i;);for(t=i=m;a=e.prev[--t],e.prev[t]=m<=a?a-m:0,--i;);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(a=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,a=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&&(i=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 a=e.block_start+i;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,P(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new j(4,4,8,4,N),new j(4,5,16,8,N),new j(4,6,32,32,N),new j(4,4,16,16,M),new j(8,16,32,32,M),new j(8,16,128,128,M),new j(8,32,128,256,M),new j(32,128,258,1024,M),new j(32,258,258,4096,M)],i.deflateInit=function(e,t){return K(e,t,g,15,8,0)},i.deflateInit2=K,i.deflateReset=Z,i.deflateResetKeep=X,i.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},i.deflate=function(e,t){var i,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,O(n,f),0!==n.strstart&&(O(n,e.adler>>>16),O(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&&z(t)<=z(i)&&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 i;;){if(0===e.lookahead&&(R(e),0===e.lookahead)){if(t===c)return L;break}if(e.match_length=0,i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:E}(n,t):3===n.strategy?function(e,t){for(var i,a,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?(i=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:E}(n,t):a[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&&(U(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)):(O(n,e.adler>>>16),O(n,65535&e.adler)),B(e),0=i.w_size&&(0===o&&(U(i.head),i.strstart=0,i.block_start=0,i.insert=0),f=new n.Buf8(i.w_size),n.arraySet(f,t,m-i.w_size,i.w_size,0),t=f,m=i.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(i);i.lookahead>=F;){for(a=i.strstart,s=i.lookahead-(F-1);i.ins_h=(i.ins_h<>>=_=k>>>24,m-=_,0===(_=k>>>16&255))x[s++]=65535&k;else{if(!(16&_)){if(0==(64&_)){k=p[(65535&k)+(f&(1<<_)-1)];continue t}if(32&_){i.mode=12;break e}e.msg="invalid literal/length code",i.mode=30;break e}y=65535&k,(_&=15)&&(m<_&&(f+=T[a++]<>>=_,m-=_),m<15&&(f+=T[a++]<>>=_=k>>>24,m-=_,!(16&(_=k>>>16&255))){if(0==(64&_)){k=g[(65535&k)+(f&(1<<_)-1)];continue i}e.msg="invalid distance code",i.mode=30;break e}if(w=65535&k,m<(_&=15)&&(f+=T[a++]<>>=_,m-=_,(_=s-r)>3,f&=(1<<(m-=y<<3))-1,e.next_in=a,e.next_out=s,e.avail_in=a>>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 a.Buf16(320),this.work=new a.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 a.Buf32(f),t.distcode=t.distdyn=new a.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 i,a;return e&&e.state?(a=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(a.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),a.arraySet(r.window,t,i-n,s,r.wnext),(n-=s)?(a.arraySet(r.window,t,i-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,i.check=s(i.check,R,2,0),y=_=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",i.mode=30;break}if(8!=(15&_)){e.msg="unknown compression method",i.mode=30;break}if(y-=4,B=8+(15&(_>>>=4)),0===i.wbits)i.wbits=B;else if(B>i.wbits){e.msg="invalid window size",i.mode=30;break}i.dmax=1<>8&1),512&i.flags&&(R[0]=255&_,R[1]=_>>>8&255,i.check=s(i.check,R,2,0)),y=_=0,i.mode=3;case 3:for(;y<32;){if(0===v)break e;v--,_+=f[g++]<>>8&255,R[2]=_>>>16&255,R[3]=_>>>24&255,i.check=s(i.check,R,4,0)),y=_=0,i.mode=4;case 4:for(;y<16;){if(0===v)break e;v--,_+=f[g++]<>8),512&i.flags&&(R[0]=255&_,R[1]=_>>>8&255,i.check=s(i.check,R,2,0)),y=_=0,i.mode=5;case 5:if(1024&i.flags){for(;y<16;){if(0===v)break e;v--,_+=f[g++]<>>8&255,i.check=s(i.check,R,2,0)),y=_=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&(v<(x=i.length)&&(x=v),x&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,f,g,x,B)),512&i.flags&&(i.check=s(i.check,f,x,g)),v-=x,g+=x,i.length-=x),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===v)break e;for(x=0;B=f[g+x++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B)),B&&x>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=12;break;case 10:for(;y<32;){if(0===v)break e;v--,_+=f[g++]<>>=7&y,y-=7&y,i.mode=27;break}for(;y<3;){if(0===v)break e;v--,_+=f[g++]<>>=1)){case 0:i.mode=14;break;case 1:if(C(i),i.mode=20,6!==t)break;_>>>=2,y-=2;break e;case 2:i.mode=17;break;case 3:e.msg="invalid block type",i.mode=30}_>>>=2,y-=2;break;case 14:for(_>>>=7&y,y-=7&y;y<32;){if(0===v)break e;v--,_+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=30;break}if(i.length=65535&_,y=_=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(x=i.length){if(v>>=5,y-=5,i.ndist=1+(31&_),_>>>=5,y-=5,i.ncode=4+(15&_),_>>>=4,y-=4,286>>=3,y-=3}for(;i.have<19;)i.lens[N[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,W={bits:i.lenbits},P=o(0,i.lens,0,19,i.lencode,0,i.work,W),i.lenbits=W.bits,P){e.msg="invalid code lengths set",i.mode=30;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,I=65535&$,!((E=$>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=E,y-=E,i.lens[i.have++]=I;else{if(16===I){for(O=E+2;y>>=E,y-=E,0===i.have){e.msg="invalid bit length repeat",i.mode=30;break}B=i.lens[i.have-1],x=3+(3&_),_>>>=2,y-=2}else if(17===I){for(O=E+3;y>>=E)),_>>>=3,y-=3}else{for(O=E+7;y>>=E)),_>>>=7,y-=7}if(i.have+x>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=30;break}for(;x--;)i.lens[i.have++]=B}}if(30===i.mode)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=30;break}if(i.lenbits=9,W={bits:i.lenbits},P=o(l,i.lens,0,i.nlen,i.lencode,0,i.work,W),i.lenbits=W.bits,P){e.msg="invalid literal/lengths set",i.mode=30;break}if(i.distbits=6,i.distcode=i.distdyn,W={bits:i.distbits},P=o(c,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,W),i.distbits=W.bits,P){e.msg="invalid distances set",i.mode=30;break}if(i.mode=20,6===t)break e;case 20:i.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,i.hold=_,i.bits=y,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,_=i.hold,y=i.bits,12===i.mode&&(i.back=-1);break}for(i.back=0;A=($=i.lencode[_&(1<>>16&255,I=65535&$,!((E=$>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>D)])>>>16&255,I=65535&$,!(D+(E=$>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=D,y-=D,i.back+=D}if(_>>>=E,y-=E,i.back+=E,i.length=I,0===A){i.mode=26;break}if(32&A){i.back=-1,i.mode=12;break}if(64&A){e.msg="invalid literal/length code",i.mode=30;break}i.extra=15&A,i.mode=22;case 22:if(i.extra){for(O=i.extra;y>>=i.extra,y-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;A=($=i.distcode[_&(1<>>16&255,I=65535&$,!((E=$>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>D)])>>>16&255,I=65535&$,!(D+(E=$>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=D,y-=D,i.back+=D}if(_>>>=E,y-=E,i.back+=E,64&A){e.msg="invalid distance code",i.mode=30;break}i.offset=I,i.extra=15&A,i.mode=24;case 24:if(i.extra){for(O=i.extra;y>>=i.extra,y-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=30;break}i.mode=25;case 25:if(0===k)break e;if(x=F-k,i.offset>x){if((x=i.offset-x)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=30;break}S=x>i.wnext?(x-=i.wnext,i.wsize-x):i.wnext-x,x>i.length&&(x=i.length),L=i.window}else L=m,S=b-i.offset,x=i.length;for(kv?(_=W[O+h[C]],z[U+h[C]]):(_=96,0),f=1<>E)+(m-=f)]=k<<24|_<<16|y,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[i+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 O(e,t,i){e.bi_valid>p-i?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=i-p):(e.bi_buf|=t<>>=1,i<<=1,0<--t;);return i>>>1}function N(e,t,i){var a,n,s=new Array(m+1),r=0;for(a=1;a<=m;a++)s[a]=r=r+i[a-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=R(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=i;i--)X(e,s,i);for(n=l;i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],X(e,s,1),a=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=a,s[2*n]=s[2*i]+s[2*a],e.depth[n]=(e.depth[i]>=e.depth[a]?e.depth[i]:e.depth[a])+1,s[2*i+1]=s[2*a+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 i,a,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,i=e.heap_max+1;i>=7;a>>=1)if(1&i&&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=i+5,i+4<=r&&-1!==t?Q(e,t,i,a):4===e.strategy||o===r?(O(e,2+(a?1:0),3),Z(e,T,x)):(O(e,4+(a?1:0),3),function(e,t,i,a){var n;for(O(e,t-257,5),O(e,i-1,5),O(e,a-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&i,e.last_lit++,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(L[i]+c+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},i._tr_align=function(e){O(e,2,3),$(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,i){"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,a){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var i,a,n,s,r=1,o={},l=!1,c=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,i="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,i=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=i,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")?(a=c.documentElement,function(e){var t=c.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.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),a=0;a[i.modelValue?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>h.close&&h.close(...e))},[(0,a.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,a.Lk)("div",r,[t[4]||(t[4]=(0,a.Lk)("span",{class:"mobile-drawer-title"},"目录导航",-1)),(0,a.bF)(u,{icon:"times",class:"mobile-drawer-close",onClick:h.close},null,8,["onClick"])]),(0,a.Lk)("div",o,[(0,a.Lk)("div",{class:(0,s.C4)(["mobile-drawer-item",{active:!i.currentPath}]),onClick:t[0]||(t[0]=e=>h.navigate(""))},[(0,a.bF)(u,{icon:"home",class:"mobile-drawer-item-icon"}),t[5]||(t[5]=(0,a.Lk)("span",null,"根目录",-1))],2),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(h.pathParts,(e,t)=>((0,a.uX)(),(0,a.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,a.bF)(u,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,a.Lk)("span",null,(0,s.v_)(e),1)],14,l))),128)),i.currentPath?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>h.goBack&&h.goBack(...e))},[(0,a.bF)(u,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),t[6]||(t[6]=(0,a.Lk)("span",null,"返回上一级",-1))])):(0,a.Q3)("",!0)])])])):(0,a.Q3)("",!0)]),_:1})])}i(8111),i(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=i(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,i,r,o,l){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.Wv)(a.Im,{to:"body"},[(0,a.bF)(n.eB,{name:"bottom-sheet"},{default:(0,a.k6)(()=>[i.modelValue?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>l.close&&l.close(...e))},[(0,a.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,n.D$)(()=>{},["stop"]))},[(0,a.Lk)("div",m,[t[10]||(t[10]=(0,a.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,a.Lk)("span",p,(0,s.v_)(i.title),1)]),(0,a.Lk)("div",g,[i.isFolder?((0,a.uX)(),(0,a.CE)(a.FK,{key:1},[(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>l.handleAction("folderCopy"))},[(0,a.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[16]||(t[16]=(0,a.Lk)("span",null,"复制链接",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>l.handleAction("move"))},[(0,a.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[17]||(t[17]=(0,a.Lk)("span",null,"移动文件夹",-1))])],64)):((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>l.handleAction("detail"))},[(0,a.bF)(c,{icon:"info-circle",class:"bottom-sheet-icon"}),t[11]||(t[11]=(0,a.Lk)("span",null,"查看详情",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>l.handleAction("copy"))},[(0,a.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[12]||(t[12]=(0,a.Lk)("span",null,"复制链接",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>l.handleAction("download"))},[(0,a.bF)(c,{icon:"download",class:"bottom-sheet-icon"}),t[13]||(t[13]=(0,a.Lk)("span",null,"下载文件",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>l.handleAction("move"))},[(0,a.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[14]||(t[14]=(0,a.Lk)("span",null,"移动文件",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>l.handleAction("tag"))},[(0,a.bF)(c,{icon:"tags",class:"bottom-sheet-icon"}),t[15]||(t[15]=(0,a.Lk)("span",null,"标签管理",-1))])],64)),(0,a.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>l.handleAction("delete"))},[(0,a.bF)(c,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,a.Lk)("span",null,(0,s.v_)(i.isFolder?"删除文件夹":"删除文件"),1)])])])])):(0,a.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 _=k,y=i(9267),w=(i(5331),i(5616),i(4275)),F=i(9559),C=i(2687),T=(i(8785),i(9623)),x=(i(6711),i(47));i(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"],z={class:"tags-to-add-section"},U={key:0,class:"tags-container"},B={key:1,class:"empty-message"},P={class:"action-buttons"},W={class:"tab-content"},O={key:0,class:"common-tags-section"},$={class:"tags-container"},R={key:1,class:"empty-message"},N={class:"tab-content"},M={class:"tab-description"},j={class:"action-buttons"};function V(e,t,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=w.v$,m=F.KR,p=w.q,g=y.kZ;return(0,a.uX)(),(0,a.Wv)(g,{title:"批量标签管理",modelValue:l.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{default:(0,a.k6)(()=>[(0,a.Lk)("div",S,[(0,a.bF)(p,{modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>o.activeTab=e),type:"border-card"},{default:(0,a.k6)(()=>[(0,a.bF)(f,{label:"添加",name:"add"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",L,[(0,a.Lk)("p",E,"为选中的 "+(0,s.v_)(l.fileCount)+" 个文件添加标签",1),(0,a.Lk)("div",A,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{onClick:l.handleAddInputTag,type:"primary"},{default:(0,a.k6)(()=>[(0,a.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,a.uX)(),(0,a.CE)("div",I,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.suggestions,e=>((0,a.uX)(),(0,a.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,D))),128))])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",z,[t[3]||(t[3]=(0,a.Lk)("h4",null,"待添加的标签",-1)),o.tagsToAdd.length>0?((0,a.uX)(),(0,a.CE)("div",U,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.tagsToAdd,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.removeFromToAdd(e),class:"tag-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,a.uX)(),(0,a.CE)("div",B," 暂无待添加标签 "))]),(0,a.Lk)("div",P,[(0,a.bF)(d,{type:"primary",onClick:l.executeAddTags,loading:o.loading,disabled:0===o.tagsToAdd.length},{default:(0,a.k6)(()=>[...t[4]||(t[4]=[(0,a.eW)(" 添加到所有文件 ",-1)])]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,a.bF)(f,{label:"移除",name:"remove"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",W,[t[6]||(t[6]=(0,a.Lk)("p",{class:"tab-description"},"移除选中文件的共有标签",-1)),o.commonTags.length>0?((0,a.uX)(),(0,a.CE)("div",O,[t[5]||(t[5]=(0,a.Lk)("h4",null,"共有标签",-1)),(0,a.Lk)("div",$,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.commonTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,a.uX)(),(0,a.CE)("div",R," 选中的文件没有共有标签 "))])]),_:1}),(0,a.bF)(f,{label:"清空",name:"clear"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",N,[(0,a.Lk)("p",M,"清空选中的 "+(0,s.v_)(l.fileCount)+" 个文件的所有标签",1),(0,a.bF)(m,{title:"⚠️警告",type:"warning",description:"此操作将清空所有选中文件的标签,且不可恢复",closable:!1,style:{"margin-bottom":"20px"},center:""}),(0,a.Lk)("div",j,[(0,a.bF)(d,{type:"danger",onClick:l.handleClearAllTags,loading:o.loading},{default:(0,a.k6)(()=>[...t[7]||(t[7]=[(0,a.eW)(" 确认清空所有标签 ",-1)])]),_:1},8,["onClick","loading"])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","width","onClose"])}i(4114),i(1701),i(3110);var X=i(1219),Z=i(2933),K=i(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),i=[];for(const a of t)if(a.ok){const e=await a.json();i.push(e.tags||[])}i.length>0?this.commonTags=i[0].filter(e=>i.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",V],["__scopeId","data-v-dacf7742"]]);var q=H,Q=i(813);i(4896);const Y={class:"tag-management-container"},J={class:"input-section"},ee={key:0,class:"suggestions-panel"},te=["onClick"],ie={class:"current-tags-section"},ae={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,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=(0,a.g2)("Loading"),m=Q.tk,p=y.kZ;return(0,a.uX)(),(0,a.Wv)(p,{title:"标签管理",modelValue:l.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{footer:(0,a.k6)(()=>[(0,a.Lk)("span",ce,[(0,a.bF)(d,{onClick:l.handleClose},{default:(0,a.k6)(()=>[...t[5]||(t[5]=[(0,a.eW)("关闭",-1)])]),_:1},8,["onClick"])])]),default:(0,a.k6)(()=>[(0,a.Lk)("div",Y,[(0,a.Lk)("div",J,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{onClick:l.handleAddTag,type:"primary"},{default:(0,a.k6)(()=>[(0,a.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,a.uX)(),(0,a.CE)("div",ee,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.suggestions,e=>((0,a.uX)(),(0,a.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,te))),128))])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",ie,[t[2]||(t[2]=(0,a.Lk)("h4",null,"当前标签",-1)),o.currentTags.length>0?((0,a.uX)(),(0,a.CE)("div",ae,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.currentTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveTag(e),class:"tag-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,a.uX)(),(0,a.CE)("div",ne," 暂无标签 "))]),(0,a.Lk)("div",se,[t[4]||(t[4]=(0,a.Lk)("h4",null,"常用标签",-1)),o.popularTags.length>0?((0,a.uX)(),(0,a.CE)("div",re,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.popularTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,onClick:t=>l.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):o.loadingPopularTags?((0,a.uX)(),(0,a.CE)("div",oe,[(0,a.bF)(m,{class:"is-loading"},{default:(0,a.k6)(()=>[(0,a.bF)(f)]),_:1}),t[3]||(t[3]=(0,a.eW)(" 加载中... ",-1))])):((0,a.uX)(),(0,a.CE)("div",le," 暂无常用标签 "))])])]),_:1},8,["modelValue","width","onClose"])}var he=i(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=i(5558),ge=(i(8075),i(6810)),be=(i(4396),i(4885),i(9869)),ve=(i(415),i(3565),i(7009));i(8450);const ke={class:"detail-actions"},_e=["src"],ye=["src"],we={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},Fe={key:1,style:{color:"#909399"}};function Ce(e,t,i,n,r,o){const l=(0,a.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=y.kZ;return(0,a.uX)(),(0,a.Wv)(b,{title:"文件详情",modelValue:o.visible,"onUpdate:modelValue":t[13]||(t[13]=e=>o.visible=e),width:o.dialogWidth},{default:(0,a.k6)(()=>[(0,a.Lk)("div",ke,[(0,a.bF)(c,{type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"download",style:{"margin-right":"3px"}}),t[14]||(t[14]=(0,a.eW)(" 下载 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"tags",style:{"margin-right":"3px"}}),t[15]||(t[15]=(0,a.eW)(" 标签 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"ban",style:{"margin-right":"3px"}}),t[16]||(t[16]=(0,a.eW)(" 黑名单 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"user-plus",style:{"margin-right":"3px"}}),t[17]||(t[17]=(0,a.eW)(" 白名单 ",-1))]),_:1}),(0,a.bF)(c,{type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"trash-alt",style:{"margin-right":"3px"}}),t[18]||(t[18]=(0,a.eW)(" 删除 ",-1))]),_:1})]),(0,a.bF)(u,{modelValue:r.activeTab,"onUpdate:modelValue":t[11]||(t[11]=e=>r.activeTab=e),onTabClick:o.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,a.k6)(()=>[(0,a.bF)(h,{label:"原始链接",name:"originUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.originUrl,"onUpdate:modelValue":t[5]||(t[5]=e=>i.urls.originUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"Markdown",name:"mdUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.mdUrl,"onUpdate:modelValue":t[6]||(t[6]=e=>i.urls.mdUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"HTML",name:"htmlUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.htmlUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>i.urls.htmlUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"BBCode",name:"bbUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.bbUrl,"onUpdate:modelValue":t[8]||(t[8]=e=>i.urls.bbUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),i.file?.metadata?.TgFileId?((0,a.uX)(),(0,a.Wv)(h,{key:0,label:"TG File ID",name:"tgId"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.tgId,"onUpdate:modelValue":t[9]||(t[9]=e=>i.urls.tgId=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,a.Q3)("",!0),i.file?.metadata?.S3Location?((0,a.uX)(),(0,a.Wv)(h,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.S3Location,"onUpdate:modelValue":t[10]||(t[10]=e=>i.urls.S3Location=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,a.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,a.bF)(g,{direction:"vertical",border:"",column:o.columnNum},{default:(0,a.k6)(()=>[(0,a.bF)(m,{label:"文件预览",rowspan:o.previewSpan,width:300,align:"center"},{default:(0,a.k6)(()=>[o.isVideo?((0,a.uX)(),(0,a.CE)("video",{key:0,src:i.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[12]||(t[12]=(...e)=>o.handleVideoClick&&o.handleVideoClick(...e))},null,8,_e)):o.isAudio?((0,a.uX)(),(0,a.CE)("audio",{key:1,src:i.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,ye)):o.isImage?((0,a.uX)(),(0,a.Wv)(f,{key:2,src:i.fileLink,fit:"cover",lazy:"",class:"image-preview"},null,8,["src"])):((0,a.uX)(),(0,a.Wv)(l,{key:3,icon:"file",class:"file-icon-detail"}))]),_:1},8,["rowspan"]),(0,a.bF)(m,{label:"文件名","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileName||i.file?.name),1)]),_:1}),(0,a.bF)(m,{label:"文件类型","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileType||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"文件大小(MB)","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileSize||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"上传时间","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(o.uploadTime),1)]),_:1}),(0,a.bF)(m,{label:"访问状态","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(o.accessType),1)]),_:1}),(0,a.bF)(m,{label:"渠道类型","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.Channel||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"渠道名称","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.ChannelName||"-"),1)]),_:1}),(0,a.bF)(m,{label:"审查结果","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.Label||"无"),1)]),_:1}),(0,a.bF)(m,{label:"上传IP","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.UploadIP||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"上传地址","class-name":"description-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.UploadAddress||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"文件标签","class-name":"description-item"},{default:(0,a.k6)(()=>[i.file?.metadata?.Tags&&i.file?.metadata?.Tags.length>0?((0,a.uX)(),(0,a.CE)("div",we,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.file?.metadata?.Tags,e=>((0,a.uX)(),(0,a.Wv)(p,{key:e,size:"small"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1024))),128))])):((0,a.uX)(),(0,a.CE)("span",Fe,"暂无标签"))]),_:1})]),_:1},8,["column"])]),_:1},8,["modelValue","width"])}var Te={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:""})}},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%":"800px"},columnNum(){return window.innerWidth<768?1:2},previewSpan(){return window.innerWidth<768?1:6},isVideo(){const e=this.file?.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isAudio(){const e=this.file?.name?.toLowerCase()||"";return e.endsWith(".mp3")||e.endsWith(".wav")||e.endsWith(".ogg")||e.endsWith(".flac")},isImage(){const e=this.file?.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},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("链接已复制")})}}};const xe=(0,h.A)(Te,[["render",Ce],["__scopeId","data-v-4969770b"]]);var Se=xe,Le=i(4880),Ee=(i(4318),i(7815)),Ae=(i(2907),i(8507));i(213);const Ie={class:"list-col list-col-checkbox"},De=["src"],ze=["src"],Ue=["title"],Be={class:"filename-start"},Pe={class:"filename-end"},We={class:"list-col list-col-tags"},Oe={key:1,class:"list-empty"},$e={class:"list-col list-col-channel"},Re={class:"list-col list-col-channel-name"},Ne={key:0,class:"channel-name-box"},Me={key:1,class:"list-empty"},je={class:"list-col list-col-address"},Ve={key:0,class:"address-box"},Xe={key:1,class:"list-empty"},Ze={class:"list-col list-col-size"},Ke={class:"list-col list-col-date"},Ge={class:"list-col list-col-actions"};function He(e,t,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=Ae.R7;return(0,a.uX)(),(0,a.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,a.Lk)("div",Ie,[(0,a.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,a.uX)(),(0,a.Wv)(c,{key:0,icon:"check",class:"check-icon"})):(0,a.Q3)("",!0)],2)]),(0,a.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[l.isFolder?((0,a.uX)(),(0,a.Wv)(c,{key:0,icon:"folder-open",class:"list-folder-icon"})):l.isVideo?((0,a.uX)(),(0,a.CE)("video",{key:1,src:i.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,De)):l.isImage?((0,a.uX)(),(0,a.CE)("img",{key:2,src:i.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,ze)):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:"file",class:"list-file-icon"}))]),(0,a.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[(0,a.Lk)("span",{class:"filename-ellipsis",title:l.displayName},[(0,a.Lk)("span",Be,(0,s.v_)(l.fileNameStart),1),(0,a.Lk)("span",Pe,(0,s.v_)(l.fileNameEnd),1)],8,Ue)]),(0,a.Lk)("div",We,[!l.isFolder&&i.item.metadata?.Tags&&i.item.metadata.Tags.length>0?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.item.metadata.Tags.slice(0,3),(e,t)=>((0,a.uX)(),(0,a.CE)("span",{key:t,class:"color-tag",style:(0,s.Tr)({background:l.getTagColor(t)})},(0,s.v_)(e),5))),128)),i.item.metadata.Tags.length>3?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,s.Tr)({background:l.getTagColor(3)})},"+"+(0,s.v_)(i.item.metadata.Tags.length-3),5)):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.CE)("span",Oe,"-"))]),(0,a.Lk)("div",$e,(0,s.v_)(l.isFolder?"-":i.item.metadata?.Channel||i.item.channelTag||"-"),1),(0,a.Lk)("div",Re,[!l.isFolder&&i.item.metadata?.ChannelName?((0,a.uX)(),(0,a.CE)("div",Ne,(0,s.v_)(i.item.metadata.ChannelName),1)):((0,a.uX)(),(0,a.CE)("span",Me,"-"))]),(0,a.Lk)("div",je,[!l.isFolder&&i.item.metadata?.UploadIP?((0,a.uX)(),(0,a.CE)("div",Ve,(0,s.v_)(i.item.metadata.UploadIP),1)):((0,a.uX)(),(0,a.CE)("span",Xe,"-"))]),(0,a.Lk)("div",Ze,(0,s.v_)(l.isFolder?"-":i.item.metadata?.FileSize?i.item.metadata.FileSize+" MB":"-"),1),(0,a.Lk)("div",Ke,(0,s.v_)(l.uploadDate),1),(0,a.Lk)("div",Ge,[l.isFolder?((0,a.uX)(),(0,a.CE)(a.FK,{key:1},[(0,a.bF)(d,{content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,n.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,a.bF)(c,{icon:"copy"})])]),_:1}),(0,a.bF)(d,{content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(c,{icon:"file-export"})])]),_:1})],64)):((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[(0,a.bF)(d,{content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.bF)(c,{icon:"copy"})])]),_:1}),(0,a.bF)(d,{content:"下载",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,a.bF)(c,{icon:"download"})])]),_:1}),(0,a.bF)(d,{content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(c,{icon:"file-export"})])]),_:1})],64)),(0,a.bF)(d,{content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.bF)(c,{icon:"trash-alt"})])]),_:1})])],32)}var qe={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 Qe=(0,h.A)(qe,[["render",He],["__scopeId","data-v-9968e9fe"]]);var Ye=Qe,Je=i(683),et=(i(5385),i(850));i(8736);const tt={class:"file-short-info"},it={key:0,class:"success-tag"},at={key:1,class:"fail-tag"},nt={key:2,class:"success-tag"},st={key:3,class:"primary-tag"},rt={key:0,style:{"margin-left":"2px"}},ot=["src"],lt={key:3,class:"file-preview"},ct={class:"card-bottom-overlay"},dt={class:"file-name-row"},ht={class:"file-name"},ut={class:"action-bar"},ft={class:"action-bar-left"},mt={class:"action-bar-right"};function pt(e,t,i,r,o,l){const c=et.dI,d=(0,a.g2)("font-awesome-icon"),h=ve.Zq,u=Ae.R7,f=Je.Ik;return(0,a.uX)(),(0,a.Wv)(f,{class:"img-card",onTouchstart:t[11]||(t[11]=t=>e.$emit("touchstart",t)),onTouchend:t[12]||(t[12]=t=>e.$emit("touchend",t)),onTouchmove:t[13]||(t[13]=t=>e.$emit("touchmove",t))},{default:(0,a.k6)(()=>[(0,a.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,a.Lk)("div",tt,["White"===i.item.metadata?.ListType?((0,a.uX)(),(0,a.CE)("div",it,(0,s.v_)(l.channelTag),1)):"Block"===i.item.metadata?.ListType||"adult"===i.item.metadata?.Label?((0,a.uX)(),(0,a.CE)("div",at,(0,s.v_)(l.channelTag),1)):((0,a.uX)(),(0,a.CE)("div",nt,(0,s.v_)(l.channelTag),1)),i.item.metadata?.Tags&&i.item.metadata?.Tags.length>0?((0,a.uX)(),(0,a.CE)("div",st,[(0,a.bF)(d,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,a.eW)(" "+(0,s.v_)(i.item.metadata.Tags[0])+" ",1),i.item.metadata.Tags.length>1?((0,a.uX)(),(0,a.CE)("span",rt," (+"+(0,s.v_)(i.item.metadata.Tags.length-1)+") ",1)):(0,a.Q3)("",!0)])):(0,a.Q3)("",!0)]),l.isVideo?((0,a.uX)(),(0,a.CE)("video",{key:0,src:i.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[2]||(t[2]=(...e)=>l.handleVideoClick&&l.handleVideoClick(...e)),onMouseenter:t[3]||(t[3]=e=>l.handleVideoHover(e,!0)),onMouseleave:t[4]||(t[4]=e=>l.handleVideoHover(e,!1))},null,40,ot)):l.isAudio?((0,a.uX)(),(0,a.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[5]||(t[5]=t=>e.$emit("detail"))},[(0,a.bF)(d,{icon:"music",class:"file-icon audio-icon"})])):l.isImage?((0,a.uX)(),(0,a.Wv)(h,{key:2,"preview-teleported":!0,src:i.fileLink,"preview-src-list":i.previewSrcList,fit:"cover",lazy:"",loading:"lazy",decoding:"async",class:"image-preview"},null,8,["src","preview-src-list"])):((0,a.uX)(),(0,a.CE)("div",lt,[(0,a.bF)(d,{icon:"file",class:"file-icon"})])),(0,a.Lk)("div",ct,[(0,a.Lk)("div",dt,[(0,a.Lk)("span",ht,(0,s.v_)(l.displayName),1)]),(0,a.Lk)("div",ut,[(0,a.Lk)("div",ft,[(0,a.bF)(u,{disabled:i.disableTooltip,content:"详情",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[6]||(t[6]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,a.bF)(d,{icon:"info-circle"})])]),_:1},8,["disabled"])]),(0,a.Lk)("div",mt,[(0,a.bF)(u,{disabled:i.disableTooltip,content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[7]||(t[7]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[8]||(t[8]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"下载",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[9]||(t[9]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,a.bF)(d,{icon:"download"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[10]||(t[10]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"])])])])]),_:1})}var gt={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}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isAudio(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp3")||e.endsWith(".wav")||e.endsWith(".ogg")||e.endsWith(".flac")},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(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleVideoHover(e,t){const i=e.target;t?i.play():(i.pause(),i.currentTime=0)}}};const bt=(0,h.A)(gt,[["render",pt],["__scopeId","data-v-44e8627d"]]);var vt=bt;const kt={class:"card-bottom-overlay"},_t={class:"file-name-row"},yt={class:"file-name"},wt={key:0,class:"action-bar"},Ft={class:"action-bar-right"};function Ct(e,t,i,r,o,l){const c=et.dI,d=(0,a.g2)("font-awesome-icon"),h=Ae.R7,u=Je.Ik;return(0,a.uX)(),(0,a.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,a.k6)(()=>[(0,a.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,a.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,a.bF)(d,{icon:"folder-open",class:"folder-icon-svg"})]),(0,a.Lk)("div",kt,[(0,a.Lk)("div",_t,[(0,a.Lk)("span",yt,(0,s.v_)(l.folderName),1)]),i.showActions?((0,a.uX)(),(0,a.CE)("div",wt,[t[9]||(t[9]=(0,a.Lk)("div",{class:"action-bar-left"},null,-1)),(0,a.Lk)("div",Ft,[(0,a.bF)(h,{disabled:i.disableTooltip,content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"]),(0,a.bF)(h,{disabled:i.disableTooltip,content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,a.bF)(h,{disabled:i.disableTooltip,content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"])])])):(0,a.Q3)("",!0)])]),_:1})}var Tt={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 xt=(0,h.A)(Tt,[["render",Ct],["__scopeId","data-v-20e5d6b4"]]);var St=xt;function Lt(e,t,i,n,s,r){return"card"===i.type?((0,a.uX)(!0),(0,a.CE)(a.FK,{key:0},(0,a.pI)(i.count,e=>((0,a.uX)(),(0,a.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,a.Lk)("div",{class:"skeleton-image"},null,-1),(0,a.Lk)("div",{class:"skeleton-info"},[(0,a.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===i.type?((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(i.count,e=>((0,a.uX)(),(0,a.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,a.Fv)('
',10)])]))),128)):(0,a.Q3)("",!0)}var Et={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const At=(0,h.A)(Et,[["render",Lt],["__scopeId","data-v-024a61ee"]]);var It=At,Dt=i(1095),zt=(i(7128),i(2086)),Ut=(i(670),i(8830),i(3597),i(6011));const Bt={class:"container"},Pt={class:"header-content"},Wt={class:"search-card"},Ot={class:"actions"},$t={class:"el-dropdown-link"},Rt={class:"el-dropdown-link"},Nt={class:"el-dropdown-link"},Mt={class:"breadcrumb-container"},jt={class:"mobile-directory-path"},Vt={class:"breadcrumb desktop-only"},Xt=["title"],Zt={key:0,class:"content"},Kt={key:1,class:"list-view"},Gt={class:"list-header"},Ht={class:"list-col list-col-checkbox"},qt={class:"pagination-container"},Qt={class:"pagination-center"},Yt={class:"pagination-right"},Jt={class:"page-total"},ei={class:"page-jump"},ti={class:"dialog-section"},ii={class:"section-content"},ai={class:"dialog-section"},ni={class:"section-header"},si={class:"section-content"},ri={class:"setting-item"},oi={key:0,class:"setting-item"},li={class:"dialog-action"};function ci(e,t,i,r,o,l){const c=Ut.A,d=(0,a.g2)("font-awesome-icon"),h=T.WK,u=zt.c6,m=zt.Iy,p=zt.dW,g=Ae.R7,b=Le.bZ,v=Dt.WZ,k=Dt.vp,w=It,F=St,C=vt,S=Ye,L=Ee.aQ,E=x.S2,A=Le.ZO,I=Le.lX,D=Se,z=ge.ll,U=ge.MQ,B=pe.qi,P=y.kZ,W=me,O=q,$=_,R=f;return(0,a.uX)(),(0,a.CE)("div",Bt,[(0,a.bF)(I,null,{default:(0,a.k6)(()=>[(0,a.bF)(b,null,{default:(0,a.k6)(()=>[(0,a.Lk)("div",Pt,[(0,a.bF)(c,{activeTab:"dashboard"}),(0,a.Lk)("div",Wt,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{icon:"search",class:"search-icon",onClick:l.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","onKeyup"])]),(0,a.Lk)("div",Ot,[(0,a.bF)(p,{onCommand:l.sort,"hide-on-click":!1},{dropdown:(0,a.k6)(()=>[(0,a.bF)(m,null,{default:(0,a.k6)(()=>[(0,a.bF)(u,{command:"dateDesc"},{default:(0,a.k6)(()=>[...t[21]||(t[21]=[(0,a.eW)("按时间倒序",-1)])]),_:1}),(0,a.bF)(u,{command:"nameAsc"},{default:(0,a.k6)(()=>[...t[22]||(t[22]=[(0,a.eW)("按名称升序",-1)])]),_:1})]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("span",$t,[(0,a.bF)(d,{icon:l.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"全选此页",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:l.selectPageIcon,class:"header-icon",onClick:l.handleSelectPage},null,8,["icon","onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{onCommand:l.handleBatchAction,"hide-on-click":!1,disabled:0===o.selectedFiles.length},{dropdown:(0,a.k6)(()=>[(0,a.bF)(m,null,{default:(0,a.k6)(()=>[(0,a.bF)(u,{command:"copy"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"copy",class:"batch-action-item-icon"}),t[23]||(t[23]=(0,a.eW)(" 复制 ",-1))]),_:1}),(0,a.bF)(u,{command:"delete"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"trash-alt",class:"batch-action-item-icon"}),t[24]||(t[24]=(0,a.eW)(" 删除 ",-1))]),_:1}),(0,a.bF)(u,{command:"download"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"download",class:"batch-action-item-icon"}),t[25]||(t[25]=(0,a.eW)(" 下载 ",-1))]),_:1}),(0,a.bF)(u,{command:"move"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"file-export",class:"batch-action-item-icon"}),t[26]||(t[26]=(0,a.eW)(" 移动 ",-1))]),_:1}),(0,a.bF)(u,{command:"tagManagement"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"tags",class:"batch-action-item-icon"}),t[27]||(t[27]=(0,a.eW)(" 标签管理 ",-1))]),_:1}),(0,a.bF)(u,{command:"ban"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"ban",class:"batch-action-item-icon"}),t[28]||(t[28]=(0,a.eW)(" 加入黑名单 ",-1))]),_:1}),(0,a.bF)(u,{command:"white"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"user-plus",class:"batch-action-item-icon"}),t[29]||(t[29]=(0,a.eW)(" 加入白名单 ",-1))]),_:1})]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("span",Rt,[(0,a.bF)(d,{icon:"ellipsis-h",class:(0,s.C4)(["header-icon",{disabled:0===o.selectedFiles.length}])},null,8,["class"])])]),_:1},8,["onCommand","disabled"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"链接格式",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.Lk)("span",Nt,[(0,a.bF)(d,{icon:"link",class:"header-icon",onClick:t[1]||(t[1]=e=>o.showUrlDialog=!0)})])]),_:1},8,["disabled"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"card"===o.viewMode?"列表视图":"卡片视图",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"card"===o.viewMode?"list":"th-large",class:"header-icon",onClick:l.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled"])])])]),_:1}),(0,a.bF)(A,{class:"main-container"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",Mt,[(0,a.Lk)("div",{class:"mobile-directory-trigger",onClick:t[2]||(t[2]=e=>o.showMobileDirectoryDrawer=!0)},[(0,a.bF)(d,{icon:"folder-open",class:"mobile-directory-icon"}),(0,a.Lk)("span",jt,(0,s.v_)(o.currentPath&&o.currentPath.split("/").filter(Boolean).length>0?o.currentPath.split("/").filter(Boolean).pop():"根目录"),1),(0,a.bF)(d,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,a.Lk)("div",Vt,[(0,a.bF)(k,{separator:"/"},{default:(0,a.k6)(()=>[(0,a.bF)(v,{onClick:t[3]||(t[3]=e=>l.navigateToFolder(""))},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.currentPath.split("/").filter(Boolean),(e,t)=>((0,a.uX)(),(0,a.Wv)(v,{key:t,onClick:e=>l.navigateToFolder(o.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,a.Lk)("span",{class:"stats-badge",title:`共 ${e.$data.Number} 个文件`},[(0,a.bF)(d,{icon:"database",class:"stats-badge-icon"}),(0,a.eW)(" "+(0,s.v_)(o.Number),1)],8,Xt)]),"card"===o.viewMode?((0,a.uX)(),(0,a.CE)("div",Zt,[o.loading?((0,a.uX)(),(0,a.Wv)(w,{key:0,type:"card",count:15})):((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(l.paginatedTableData,(e,t)=>((0,a.uX)(),(0,a.CE)(a.FK,{key:t},[l.isFolder(e)?((0,a.uX)(),(0,a.Wv)(F,{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:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onTouchstart:i=>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,a.uX)(),(0,a.Wv)(C,{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:i=>l.openDetailDialog(t,e.name),onCopy:i=>l.handleCopy(t,e.name),onMove:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:i=>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,a.uX)(),(0,a.CE)("div",Kt,[(0,a.Lk)("div",Gt,[(0,a.Lk)("div",Ht,[(0,a.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:l.isSelectAll,indeterminate:l.isIndeterminate}]),onClick:t[4]||(t[4]=e=>l.handleSelectAllPage(!l.isSelectAll))},[l.isSelectAll?((0,a.uX)(),(0,a.Wv)(d,{key:0,icon:"check",class:"check-icon"})):l.isIndeterminate?((0,a.uX)(),(0,a.Wv)(d,{key:1,icon:"minus",class:"check-icon"})):(0,a.Q3)("",!0)],2)]),t[30]||(t[30]=(0,a.Lk)("div",{class:"list-col list-col-preview"},"预览",-1)),t[31]||(t[31]=(0,a.Lk)("div",{class:"list-col list-col-name"},"文件名",-1)),t[32]||(t[32]=(0,a.Lk)("div",{class:"list-col list-col-tags"},"标签",-1)),t[33]||(t[33]=(0,a.Lk)("div",{class:"list-col list-col-channel"},"渠道类型",-1)),t[34]||(t[34]=(0,a.Lk)("div",{class:"list-col list-col-channel-name"},"渠道名称",-1)),t[35]||(t[35]=(0,a.Lk)("div",{class:"list-col list-col-address"},"上传地址",-1)),t[36]||(t[36]=(0,a.Lk)("div",{class:"list-col list-col-size"},"大小",-1)),t[37]||(t[37]=(0,a.Lk)("div",{class:"list-col list-col-date"},"上传时间",-1)),t[38]||(t[38]=(0,a.Lk)("div",{class:"list-col list-col-actions"},"操作",-1))]),o.loading?((0,a.uX)(),(0,a.Wv)(w,{key:0,type:"list",count:15})):((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(l.paginatedTableData,(e,t)=>((0,a.uX)(),(0,a.Wv)(S,{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:i=>l.openDetailDialog(t,e.name),onCopy:i=>l.handleCopy(t,e.name),onFolderCopy:t=>l.handleFolderCopy(e.name),onMove:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:i=>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,a.Lk)("div",qt,[(0,a.Lk)("div",Qt,[(0,a.bF)(L,{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,a.bF)(E,{type:"primary",onClick:l.refreshFileList,class:"refresh-btn"},{default:(0,a.k6)(()=>[(0,a.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,a.uX)(),(0,a.Wv)(E,{key:0,type:"primary",onClick:l.loadMoreData,loading:o.loading,class:"load-more"},{default:(0,a.k6)(()=>[...t[39]||(t[39]=[(0,a.eW)(" 加载更多 ",-1)])]),_:1},8,["onClick","loading"])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",Yt,[(0,a.Lk)("span",Jt,"共 "+(0,s.v_)(l.realTotalPages)+" 页",1),(0,a.Lk)("div",ei,[t[41]||(t[41]=(0,a.Lk)("span",null,"跳至",-1)),(0,a.bF)(h,{modelValue:o.jumpPage,"onUpdate:modelValue":t[5]||(t[5]=e=>o.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,n.jR)(l.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,a.bF)(E,{size:"small",type:"primary",onClick:l.handleJumpPage,class:"jump-btn"},{default:(0,a.k6)(()=>[...t[40]||(t[40]=[(0,a.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1})]),_:1}),(0,a.bF)(D,{modelValue:o.showdetailDialog,"onUpdate:modelValue":t[6]||(t[6]=e=>o.showdetailDialog=e),file:o.detailFile,fileLink:l.getFileLink(o.detailFile?.name),urls:l.allUrl,onDownload:t[7]||(t[7]=e=>l.handleDownload(o.detailFile?.name)),onTagManagement:t[8]||(t[8]=e=>l.handleTagManagement(o.detailFile?.name)),onBlock:t[9]||(t[9]=e=>l.handleBlock(o.detailFile?.name)),onWhite:t[10]||(t[10]=e=>l.handleWhite(o.detailFile?.name)),onDelete:t[11]||(t[11]=e=>l.handleDetailDelete(o.detailFile?.name))},null,8,["modelValue","file","fileLink","urls"]),(0,a.bF)(P,{title:"链接格式",modelValue:o.showUrlDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>o.showUrlDialog=e),width:l.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",ti,[t[48]||(t[48]=(0,a.Lk)("div",{class:"section-header"},[(0,a.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,a.Lk)("div",ii,[(0,a.bF)(U,{modelValue:o.defaultUrlFormat,"onUpdate:modelValue":t[12]||(t[12]=e=>o.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,a.k6)(()=>[(0,a.bF)(z,{label:"originUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"link",class:"radio-icon"}),t[42]||(t[42]=(0,a.Lk)("span",null,"原始链接",-1))]),_:1}),(0,a.bF)(z,{label:"mdUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"code",class:"radio-icon"}),t[43]||(t[43]=(0,a.Lk)("span",null,"Markdown",-1))]),_:1}),(0,a.bF)(z,{label:"htmlUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"code-branch",class:"radio-icon"}),t[44]||(t[44]=(0,a.Lk)("span",null,"HTML",-1))]),_:1}),(0,a.bF)(z,{label:"bbUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"quote-right",class:"radio-icon"}),t[45]||(t[45]=(0,a.Lk)("span",null,"BBCode",-1))]),_:1}),(0,a.bF)(z,{label:"tgId",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"paper-plane",class:"radio-icon"}),t[46]||(t[46]=(0,a.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,a.bF)(z,{label:"s3Location",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"cloud",class:"radio-icon"}),t[47]||(t[47]=(0,a.Lk)("span",null,"S3链接",-1))]),_:1})]),_:1},8,["modelValue"])])]),(0,a.Lk)("div",ai,[(0,a.Lk)("div",ni,[t[49]||(t[49]=(0,a.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,a.bF)(g,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,a.Lk)("div",si,[(0,a.Lk)("div",ri,[t[50]||(t[50]=(0,a.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,a.bF)(B,{modelValue:o.useCustomUrl,"onUpdate:modelValue":t[13]||(t[13]=e=>o.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===o.useCustomUrl?((0,a.uX)(),(0,a.CE)("div",oi,[t[51]||(t[51]=(0,a.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,a.bF)(h,{modelValue:o.customUrlPrefix,"onUpdate:modelValue":t[14]||(t[14]=e=>o.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",li,[(0,a.bF)(E,{type:"primary",onClick:t[15]||(t[15]=e=>o.showUrlDialog=!1),class:"confirm-btn"},{default:(0,a.k6)(()=>[...t[52]||(t[52]=[(0,a.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,a.bF)(W,{modelValue:o.showTagDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>o.showTagDialog=e),fileId:o.currentTagFile,onTagsUpdated:l.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,a.bF)(O,{modelValue:o.showBatchTagDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>o.showBatchTagDialog=e),selectedFiles:o.selectedFiles,onTagsUpdated:l.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,a.bF)($,{modelValue:o.showMobileActionModal,"onUpdate:modelValue":t[19]||(t[19]=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,a.bF)(R,{modelValue:o.showMobileDirectoryDrawer,"onUpdate:modelValue":t[20]||(t[20]=e=>o.showMobileDirectoryDrawer=e),currentPath:o.currentPath,onNavigate:l.navigateToFolder,onGoBack:l.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"])])}i(1148),i(116),i(7588),i(3579),i(7642),i(8004),i(3853),i(5876),i(2475),i(5024),i(1698),i(4603),i(7566),i(8721);var di=i(8401),hi=i(4813),ui=i.n(hi);i(8335);class fi{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,i=!1,a=""){try{let n=this.getLocalFileList();if(i){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(a)){const e=t.substring(a.length).split("/");if(e.length>1){const t=a+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(),i=t.files.filter(t=>t.name.startsWith(e+"/")),a=t.directories.filter(t=>t.startsWith(e+"/"));return{files:i,directories:a}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}async refreshFileList(e,t="",i="",a=""){t=t.trim();try{let n=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;i&&(n+=`&includeTags=${encodeURIComponent(i)}`),a&&(n+=`&excludeTags=${encodeURIComponent(a)}`);const s=await(0,K.A)(n,{method:"GET"}),r=await s.json();return r.isIndexedResponse||X.nk.warning("索引构建中,当前搜索和排序结果可能不准确,请稍后再试。"),this.saveFileList(r)}catch(n){return console.error("Error refreshing file list:",n),!1}}async loadMoreFiles(e,t="",i="",a="",n=60){t=t.trim();try{const s=this.getLocalFileList(),r=s.files.length;let o=`/api/manage/list?dir=${e}&start=${r}&count=${n}&search=${encodeURIComponent(t)}`;i&&(o+=`&includeTags=${encodeURIComponent(i)}`),a&&(o+=`&excludeTags=${encodeURIComponent(a)}`);const l=await(0,K.A)(o,{method:"GET"}),c=await l.json();return s.files.push(...c.files),this.saveFileList(s)}catch(s){return console.error("Error loading more files:",s),{files:[],directories:[]}}}}const mi=new fi;var pi=i(2388),gi={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:""}},components:{DashboardTabs:Ut.A,TagManagementDialog:me,BatchTagDialog:q,SkeletonLoader:It,FileCard:vt,FolderCard:St,FileListItem:Ye,FileDetailDialog:Se,MobileActionSheet:_,MobileDirectoryDrawer:f},computed:{...(0,di.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},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,i=t+this.pageSize;let a=e.slice(t,i);const n=a.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return a.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)))))}),a.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="未知"}),a},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||"未知"}:{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||"未知"}},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,i=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(i,t.name);break;case"copy":this.handleCopy(i,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(i,t.name);break;case"delete":this.handleDelete(i,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 i=e.target;t?i.play().catch(()=>{}):(i.pause(),i.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let i=0;while(e>=1024&&i0?1:0)+" "+t[i]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let i=this.search;const a=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;i=i.replace(a,(e,i)=>(t.push(i.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;i=i.replace(n,(t,i)=>(e.push(i.toLowerCase())," ")),this.searchKeywords=i.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()},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 i=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(`此操作将永久删除${i?"文件夹":"该文件"}, 是否继续?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${t}?folder=${i}`,{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),mi.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,i)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[i].name);-1!==e&&this.tableData.splice(e,1),mi.removeFile(this.selectedFiles[i].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 i=null;t.length>0&&(i=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"}),i=await t.json();i.files&&i.files.length>0&&(n=n.concat(i.files))}catch(a){console.error(`获取文件夹 ${e.name} 内容失败:`,a)}if(i&&i.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(a){i&&i.close(),console.error("批量复制链接失败:",a),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 i="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":i=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":i=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":i=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":i=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":i=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":i=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":i=`${this.rootUrl}${t}`;break;case"mdUrl":i=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":i=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":i=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":i=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":i=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(i).then(()=>this.$message.success("复制文件链接成功")):this.copyToClipboardFallback(i)},async loadMoreData(){this.loading=!0;try{await mi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags),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),i=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),i.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),i.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(i)},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,i)=>{if("confirm"===e){const e=t.inputValue,a=(0,pi.G)(e);if(!a.valid)return void this.$message.error(a.error);i()}else i()}}).then(({value:e})=>{const i=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/"),a=this.tableData.find(e=>e.name===t).isFolder;i!==this.currentPath?(0,K.A)(`/api/manage/move/${t}?folder=${a}&dist=${i}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);if(-1!==e){const n=i+t.split("/").pop();mi.moveFile(t,n,a,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,i)=>{if("confirm"===e){const e=t.inputValue,a=(0,pi.G)(e);if(!a.valid)return void this.$message.error(a.error);i()}else i()}}).then(({value:e})=>{const t=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/");if(t===this.currentPath)return void this.$message.warning("目标文件夹不能是当前文件夹");const i=this.selectedFiles.map(e=>{const i=e.isFolder;return(0,K.A)(`/api/manage/move/${e.name}?folder=${i}&dist=${t}`,{method:"GET"})});Promise.all(i).then(e=>{let i=0;e.forEach((e,a)=>{if(e.ok){i++;const e=this.selectedFiles[a];e.selected=!1;const n=this.tableData.findIndex(t=>t.name===e.name);if(-1!==n){const i=t+e.name.split("/").pop();mi.moveFile(e.name,i,e.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-i,!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(ui()),t=e.folder("files"),i={},a=this.selectedFiles.map(async e=>{if(e.isFolder)return;const a=await fetch(this.getFileLink(e.name)),n=await a.blob();let s=e.metadata?.FileName||e.name;if(i[s]){const t=s.substring(s.lastIndexOf(".")),a=s.substring(0,s.lastIndexOf("."));s=`${a}(${i[s]})${t}`,i[e.name]++}else i[s]=1;t.file(s,n)});Promise.all(a).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 i=["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"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const i=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const i=["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"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}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,i=this.filteredTableData.filter(e=>e.isFolder).length,a=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-i-a);n>0&&(await mi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n),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 i=e.split("/");if(""===this.currentPath)t=i[0];else{const i=e.substring(this.currentPath.length);t=i.split("/")[0]}}else t=e;const i=20;if(t.length>i){const e=Math.floor((i-3)/2),a=Math.ceil((i-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-a)}`}return t},getFileName(e){let t=e.split("/").pop();const i=20;if(t.length>i){const e=Math.floor((i-3)/2),a=Math.ceil((i-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-a)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const i=e.substring(0,t),a=Math.min(i.length,Math.floor(.6*e.length));return i.substring(0,a)}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 i=e.substring(t),a=e.substring(0,t),n=Math.min(8,Math.floor(.2*a.length));return"…"+a.substring(a.length-n)+i}const i=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-i)},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=mi.getLocalFileList(),t=new Set(e.directories||[]),i=e.files||[],a=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=i.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...a,...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 mi.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags);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 i="External"===t?.Channel,a=i?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return a;case"mdUrl":return`![${n}](${a})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${a}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return a}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:"正在获取文件列表..."});try{const i=await(0,K.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),a=await i.json();if(t.close(),!a.files||0===a.files.length)return void this.$message.warning("文件夹为空,没有可复制的链接");const n=a.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(i){t.close(),console.error("复制文件夹链接失败:",i),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()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error("同步数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl}};const bi=(0,h.A)(gi,[["render",ci],["__scopeId","data-v-8a2e65f0"]]);var vi=bi}}]); -//# sourceMappingURL=675.63e531de.js.map \ No newline at end of file +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[278],{415:function(e,t,i){"use strict";i(5331),i(3565)},2388:function(e,t,i){"use strict";function a(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}}i.d(t,{G:function(){return a}})},2907:function(e,t,i){"use strict";i(5331),i(6808),i(6711)},3565:function(e,t,i){"use strict";i(5331)},4396:function(e,t,i){"use strict";i(5331),i(4885)},4813:function(e,t,i){i(4114),i(6573),i(8100),i(7936),i(8111),i(2489),i(7588),i(9577),i(1549),i(9797),i(9631),i(5623),i(9848),function(t){e.exports=t()}(function(){return function e(t,i,a){function n(r,o){if(!i[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=i[r]={exports:{}};t[r][0].call(d.exports,function(e){var i=t[r][1][e];return n(i||e)},d,d.exports,e,t,i,a)}return i[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|i>>4,l=1>6:64,c=2>4,i=(15&r)<<4|(o=s.indexOf(e.charAt(c++)))>>2,a=(3&o)<<6|(l=s.indexOf(e.charAt(c++))),u[d++]=t,64!==o&&(u[d++]=i),64!==l&&(u[d++]=a);return u}},{"./support":30,"./utils":32}],2:[function(e,t,i){"use strict";var a=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,i,a,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=i,this.compression=a,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(a.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(a.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,i){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(i)).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,i){"use strict";var a=e("./stream/GenericWorker");i.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},i.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,i){"use strict";var a=e("./utils"),n=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var a=0;a<8;a++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==a.getTypeOf(e)?function(e,t,i,a){var s=n,r=a+i;e^=-1;for(var o=a;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,i,a){var s=n,r=a+i;e^=-1;for(var o=a;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,i){"use strict";i.base64=!1,i.binary=!1,i.dir=!1,i.createFolders=!0,i.date=null,i.compression=null,i.compressionOptions=null,i.comment=null,i.unixPermissions=null,i.dosPermissions=null},{}],6:[function(e,t,i){"use strict";var a=null;a="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:a}},{lie:37}],7:[function(e,t,i){"use strict";var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=a?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}i.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})}},i.compressWorker=function(e){return new l("Deflate",e)},i.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,i){"use strict";function a(e,t){var i,a="";for(i=0;i>>=8;return a}function n(e,t,i,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)),_=s.transformTo("string",o.utf8encode(v)),y=b.length!==f.name.length,w=_.length!==v.length,F="",C="",T="",x=f.dir,S=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!i||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var E=0;t&&(E|=8),p||!y&&!w||(E|=2048);var A=0,I=0;x&&(A|=16),"UNIX"===r?(I=798,A|=function(e,t){var i=e;return e||(i=t?16893:33204),(65535&i)<<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(),y&&(C=a(1,1)+a(l(g),4)+b,F+="up"+a(C.length,2)+C),w&&(T=a(1,1)+a(l(k),4)+_,F+="uc"+a(T.length,2)+T);var D="";return D+="\n\0",D+=a(E,2),D+=m.magic,D+=a(h,2),D+=a(u,2),D+=a(L.crc32,4),D+=a(L.compressedSize,4),D+=a(L.uncompressedSize,4),D+=a(g.length,2),D+=a(F.length,2),{fileRecord:c.LOCAL_FILE_HEADER+D+g+F,dirRecord:c.CENTRAL_FILE_HEADER+a(I,2)+D+a(k.length,2)+"\0\0\0\0"+a(A,4)+a(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,i,a){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=i,this.encodeFileName=a,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,i=this.entriesCount,a=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:i?(t+100*(i-a-1))/i: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 i=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:i.fileRecord,meta:{percent:0}})}else this.accumulate=!0},d.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,i=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(i.dirRecord),t)this.push({data:function(e){return c.DATA_DESCRIPTOR+a(e.crc32,4)+a(e.compressedSize,4)+a(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:i.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--)i=(i<<8)+this.byteAt(t);return this.index+=e,i},readString:function(e){return a.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,i){"use strict";var a=e("./Uint8ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("./DataReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("./ArrayReader");function n(e){a.call(this,e)}e("../utils").inherits(n,a),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,i){"use strict";var a=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=a.getTypeOf(e);return a.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(a.transformTo("uint8array",e)):new s(a.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,i){"use strict";i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,i){"use strict";var a=e("./GenericWorker"),n=e("../utils");function s(e){a.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,a),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,i){"use strict";var a=e("./GenericWorker"),n=e("../crc32");function s(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,a),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,i){"use strict";var a=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}a.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,i){"use strict";var a=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=a.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}a.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,a.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.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,i){"use strict";function a(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}a.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 i=0;i "+e:e}},t.exports=a},{}],29:[function(e,t,i){"use strict";var a=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(i,n){var s=[],o=e._internalType,l=e._outputType,c=e._mimeType;e.on("data",function(e,i){s.push(e),t&&t(i)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,i){switch(e){case"blob":return a.newBlob(a.transformTo("arraybuffer",t),i);case"base64":return r.encode(t);default:return a.transformTo(e,t)}}(l,function(e,t){var i,a=0,n=null,s=0;for(i=0;i>>6:(i<65536?t[r++]=224|i>>>12:(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63),t[r++]=128|i>>>6&63),t[r++]=128|63&i);return t}(e)},i.utf8decode=function(e){return n.nodebuffer?a.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,i,n,s,r=e.length,l=new Array(2*r);for(t=i=0;t>10&1023,l[i++]=56320|1023&n)}return l.length!==i&&(l.subarray?l=l.subarray(0,i):l.length=i),a.applyFromCharCode(l)}(e=a.transformTo(n.uint8array?"uint8array":"array",e))},a.inherits(c,r),c.prototype.processChunk=function(e){var t=a.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 i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;0<=i&&128==(192&e[i]);)i--;return i<0||0===i?t:i+o[e[i]]>t?i: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:i.utf8decode(l),meta:e.meta})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=c,a.inherits(d,r),d.prototype.processChunk=function(e){this.push({data:i.utf8encode(e.data),meta:e.meta})},i.Utf8EncodeWorker=d},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,i){"use strict";var a=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var i=0;i>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=a(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,i,a,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(i<65536?t[r++]=224|i>>>12:(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63),t[r++]=128|i>>>6&63),t[r++]=128|63&i);return t},i.buf2binstring=function(e){return l(e,e.length)},i.binstring2buf=function(e){for(var t=new a.Buf8(e.length),i=0,n=t.length;i>10&1023,c[a++]=56320|1023&n)}return l(c,a)},i.utf8border=function(e,t){var i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;0<=i&&128==(192&e[i]);)i--;return i<0||0===i?t:i+r[e[i]]>t?i:t}},{"./common":41}],43:[function(e,t,i){"use strict";t.exports=function(e,t,i,a){for(var n=65535&e,s=e>>>16&65535,r=0;0!==i;){for(i-=r=2e3>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t,i,n){var s=a,r=n+i;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,i){"use strict";var a,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,_=19,y=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 z(e){return(e<<1)-(4e.avail_out&&(i=e.avail_out),0!==i&&(n.arraySet(e.output,t.pending_buf,t.pending_out,i,e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))}function P(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 O(e,t){var i,a,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[(i=t)+r]===m&&c[i+r-1]===f&&c[i]===c[s]&&c[++i]===c[s+1]){s+=2,i++;do{}while(c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&c[++s]===c[++i]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function R(e){var t,i,a,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=i=e.hash_size;a=e.head[--t],e.head[t]=m<=a?a-m:0,--i;);for(t=i=m;a=e.prev[--t],e.prev[t]=m<=a?a-m:0,--i;);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(a=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,a=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&&(i=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 a=e.block_start+i;if((0===e.strstart||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,P(e,!1),0===e.strm.avail_out))return L;if(e.strstart-e.block_start>=e.w_size-T&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new j(4,4,8,4,N),new j(4,5,16,8,N),new j(4,6,32,32,N),new j(4,4,16,16,M),new j(8,16,32,32,M),new j(8,16,128,128,M),new j(8,32,128,256,M),new j(32,128,258,1024,M),new j(32,258,258,4096,M)],i.deflateInit=function(e,t){return K(e,t,g,15,8,0)},i.deflateInit2=K,i.deflateReset=Z,i.deflateResetKeep=X,i.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},i.deflate=function(e,t){var i,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&&z(t)<=z(i)&&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 i;;){if(0===e.lookahead&&(R(e),0===e.lookahead)){if(t===c)return L;break}if(e.match_length=0,i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:E}(n,t):3===n.strategy?function(e,t){for(var i,a,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?(i=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===d?(P(e,!0),0===e.strm.avail_out?A:I):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:E}(n,t):a[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&&(U(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=i.w_size&&(0===o&&(U(i.head),i.strstart=0,i.block_start=0,i.insert=0),f=new n.Buf8(i.w_size),n.arraySet(f,t,m-i.w_size,i.w_size,0),t=f,m=i.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(i);i.lookahead>=F;){for(a=i.strstart,s=i.lookahead-(F-1);i.ins_h=(i.ins_h<>>=_=k>>>24,m-=_,0===(_=k>>>16&255))x[s++]=65535&k;else{if(!(16&_)){if(0==(64&_)){k=p[(65535&k)+(f&(1<<_)-1)];continue t}if(32&_){i.mode=12;break e}e.msg="invalid literal/length code",i.mode=30;break e}y=65535&k,(_&=15)&&(m<_&&(f+=T[a++]<>>=_,m-=_),m<15&&(f+=T[a++]<>>=_=k>>>24,m-=_,!(16&(_=k>>>16&255))){if(0==(64&_)){k=g[(65535&k)+(f&(1<<_)-1)];continue i}e.msg="invalid distance code",i.mode=30;break e}if(w=65535&k,m<(_&=15)&&(f+=T[a++]<>>=_,m-=_,(_=s-r)>3,f&=(1<<(m-=y<<3))-1,e.next_in=a,e.next_out=s,e.avail_in=a>>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 a.Buf16(320),this.work=new a.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 a.Buf32(f),t.distcode=t.distdyn=new a.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 i,a;return e&&e.state?(a=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(a.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),a.arraySet(r.window,t,i-n,s,r.wnext),(n-=s)?(a.arraySet(r.window,t,i-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,i.check=s(i.check,R,2,0),y=_=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",i.mode=30;break}if(8!=(15&_)){e.msg="unknown compression method",i.mode=30;break}if(y-=4,B=8+(15&(_>>>=4)),0===i.wbits)i.wbits=B;else if(B>i.wbits){e.msg="invalid window size",i.mode=30;break}i.dmax=1<>8&1),512&i.flags&&(R[0]=255&_,R[1]=_>>>8&255,i.check=s(i.check,R,2,0)),y=_=0,i.mode=3;case 3:for(;y<32;){if(0===v)break e;v--,_+=f[g++]<>>8&255,R[2]=_>>>16&255,R[3]=_>>>24&255,i.check=s(i.check,R,4,0)),y=_=0,i.mode=4;case 4:for(;y<16;){if(0===v)break e;v--,_+=f[g++]<>8),512&i.flags&&(R[0]=255&_,R[1]=_>>>8&255,i.check=s(i.check,R,2,0)),y=_=0,i.mode=5;case 5:if(1024&i.flags){for(;y<16;){if(0===v)break e;v--,_+=f[g++]<>>8&255,i.check=s(i.check,R,2,0)),y=_=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&(v<(x=i.length)&&(x=v),x&&(i.head&&(B=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),a.arraySet(i.head.extra,f,g,x,B)),512&i.flags&&(i.check=s(i.check,f,x,g)),v-=x,g+=x,i.length-=x),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===v)break e;for(x=0;B=f[g+x++],i.head&&B&&i.length<65536&&(i.head.name+=String.fromCharCode(B)),B&&x>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=12;break;case 10:for(;y<32;){if(0===v)break e;v--,_+=f[g++]<>>=7&y,y-=7&y,i.mode=27;break}for(;y<3;){if(0===v)break e;v--,_+=f[g++]<>>=1)){case 0:i.mode=14;break;case 1:if(C(i),i.mode=20,6!==t)break;_>>>=2,y-=2;break e;case 2:i.mode=17;break;case 3:e.msg="invalid block type",i.mode=30}_>>>=2,y-=2;break;case 14:for(_>>>=7&y,y-=7&y;y<32;){if(0===v)break e;v--,_+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=30;break}if(i.length=65535&_,y=_=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(x=i.length){if(v>>=5,y-=5,i.ndist=1+(31&_),_>>>=5,y-=5,i.ncode=4+(15&_),_>>>=4,y-=4,286>>=3,y-=3}for(;i.have<19;)i.lens[N[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,W={bits:i.lenbits},P=o(0,i.lens,0,19,i.lencode,0,i.work,W),i.lenbits=W.bits,P){e.msg="invalid code lengths set",i.mode=30;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,I=65535&O,!((E=O>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=E,y-=E,i.lens[i.have++]=I;else{if(16===I){for($=E+2;y<$;){if(0===v)break e;v--,_+=f[g++]<>>=E,y-=E,0===i.have){e.msg="invalid bit length repeat",i.mode=30;break}B=i.lens[i.have-1],x=3+(3&_),_>>>=2,y-=2}else if(17===I){for($=E+3;y<$;){if(0===v)break e;v--,_+=f[g++]<>>=E)),_>>>=3,y-=3}else{for($=E+7;y<$;){if(0===v)break e;v--,_+=f[g++]<>>=E)),_>>>=7,y-=7}if(i.have+x>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=30;break}for(;x--;)i.lens[i.have++]=B}}if(30===i.mode)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=30;break}if(i.lenbits=9,W={bits:i.lenbits},P=o(l,i.lens,0,i.nlen,i.lencode,0,i.work,W),i.lenbits=W.bits,P){e.msg="invalid literal/lengths set",i.mode=30;break}if(i.distbits=6,i.distcode=i.distdyn,W={bits:i.distbits},P=o(c,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,W),i.distbits=W.bits,P){e.msg="invalid distances set",i.mode=30;break}if(i.mode=20,6===t)break e;case 20:i.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,i.hold=_,i.bits=y,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,_=i.hold,y=i.bits,12===i.mode&&(i.back=-1);break}for(i.back=0;A=(O=i.lencode[_&(1<>>16&255,I=65535&O,!((E=O>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>D)])>>>16&255,I=65535&O,!(D+(E=O>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=D,y-=D,i.back+=D}if(_>>>=E,y-=E,i.back+=E,i.length=I,0===A){i.mode=26;break}if(32&A){i.back=-1,i.mode=12;break}if(64&A){e.msg="invalid literal/length code",i.mode=30;break}i.extra=15&A,i.mode=22;case 22:if(i.extra){for($=i.extra;y<$;){if(0===v)break e;v--,_+=f[g++]<>>=i.extra,y-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;A=(O=i.distcode[_&(1<>>16&255,I=65535&O,!((E=O>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>D)])>>>16&255,I=65535&O,!(D+(E=O>>>24)<=y);){if(0===v)break e;v--,_+=f[g++]<>>=D,y-=D,i.back+=D}if(_>>>=E,y-=E,i.back+=E,64&A){e.msg="invalid distance code",i.mode=30;break}i.offset=I,i.extra=15&A,i.mode=24;case 24:if(i.extra){for($=i.extra;y<$;){if(0===v)break e;v--,_+=f[g++]<>>=i.extra,y-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=30;break}i.mode=25;case 25:if(0===k)break e;if(x=F-k,i.offset>x){if((x=i.offset-x)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=30;break}S=x>i.wnext?(x-=i.wnext,i.wsize-x):i.wnext-x,x>i.length&&(x=i.length),L=i.window}else L=m,S=b-i.offset,x=i.length;for(kv?(_=W[$+h[C]],z[U+h[C]]):(_=96,0),f=1<>E)+(m-=f)]=k<<24|_<<16|y,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[i+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,i){e.bi_valid>p-i?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=i-p):(e.bi_buf|=t<>>=1,i<<=1,0<--t;);return i>>>1}function N(e,t,i){var a,n,s=new Array(m+1),r=0;for(a=1;a<=m;a++)s[a]=r=r+i[a-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=R(s[o]++,o))}}function M(e){var t;for(t=0;t>1;1<=i;i--)X(e,s,i);for(n=l;i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],X(e,s,1),a=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=a,s[2*n]=s[2*i]+s[2*a],e.depth[n]=(e.depth[i]>=e.depth[a]?e.depth[i]:e.depth[a])+1,s[2*i+1]=s[2*a+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 i,a,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,i=e.heap_max+1;i>=7;a>>=1)if(1&i&&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=i+5,i+4<=r&&-1!==t?Q(e,t,i,a):4===e.strategy||o===r?($(e,2+(a?1:0),3),Z(e,T,x)):($(e,4+(a?1:0),3),function(e,t,i,a){var n;for($(e,t-257,5),$(e,i-1,5),$(e,a-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&i,e.last_lit++,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(L[i]+c+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},i._tr_align=function(e){$(e,2,3),O(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,i){"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,a){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var i,a,n,s,r=1,o={},l=!1,c=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,i="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,i=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=i,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")?(a=c.documentElement,function(e){var t=c.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.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),a=0;a[i.modelValue?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>h.close&&h.close(...e))},[(0,a.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,a.Lk)("div",r,[t[4]||(t[4]=(0,a.Lk)("span",{class:"mobile-drawer-title"},"目录导航",-1)),(0,a.bF)(u,{icon:"times",class:"mobile-drawer-close",onClick:h.close},null,8,["onClick"])]),(0,a.Lk)("div",o,[(0,a.Lk)("div",{class:(0,s.C4)(["mobile-drawer-item",{active:!i.currentPath}]),onClick:t[0]||(t[0]=e=>h.navigate(""))},[(0,a.bF)(u,{icon:"home",class:"mobile-drawer-item-icon"}),t[5]||(t[5]=(0,a.Lk)("span",null,"根目录",-1))],2),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(h.pathParts,(e,t)=>((0,a.uX)(),(0,a.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,a.bF)(u,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,a.Lk)("span",null,(0,s.v_)(e),1)],14,l))),128)),i.currentPath?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>h.goBack&&h.goBack(...e))},[(0,a.bF)(u,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),t[6]||(t[6]=(0,a.Lk)("span",null,"返回上一级",-1))])):(0,a.Q3)("",!0)])])])):(0,a.Q3)("",!0)]),_:1})])}i(8111),i(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=i(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,i,r,o,l){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.Wv)(a.Im,{to:"body"},[(0,a.bF)(n.eB,{name:"bottom-sheet"},{default:(0,a.k6)(()=>[i.modelValue?((0,a.uX)(),(0,a.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>l.close&&l.close(...e))},[(0,a.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,n.D$)(()=>{},["stop"]))},[(0,a.Lk)("div",m,[t[10]||(t[10]=(0,a.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,a.Lk)("span",p,(0,s.v_)(i.title),1)]),(0,a.Lk)("div",g,[i.isFolder?((0,a.uX)(),(0,a.CE)(a.FK,{key:1},[(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>l.handleAction("folderCopy"))},[(0,a.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[16]||(t[16]=(0,a.Lk)("span",null,"复制链接",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>l.handleAction("move"))},[(0,a.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[17]||(t[17]=(0,a.Lk)("span",null,"移动文件夹",-1))])],64)):((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>l.handleAction("detail"))},[(0,a.bF)(c,{icon:"info-circle",class:"bottom-sheet-icon"}),t[11]||(t[11]=(0,a.Lk)("span",null,"查看详情",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>l.handleAction("copy"))},[(0,a.bF)(c,{icon:"copy",class:"bottom-sheet-icon"}),t[12]||(t[12]=(0,a.Lk)("span",null,"复制链接",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>l.handleAction("download"))},[(0,a.bF)(c,{icon:"download",class:"bottom-sheet-icon"}),t[13]||(t[13]=(0,a.Lk)("span",null,"下载文件",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>l.handleAction("move"))},[(0,a.bF)(c,{icon:"file-export",class:"bottom-sheet-icon"}),t[14]||(t[14]=(0,a.Lk)("span",null,"移动文件",-1))]),(0,a.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>l.handleAction("tag"))},[(0,a.bF)(c,{icon:"tags",class:"bottom-sheet-icon"}),t[15]||(t[15]=(0,a.Lk)("span",null,"标签管理",-1))])],64)),(0,a.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>l.handleAction("delete"))},[(0,a.bF)(c,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,a.Lk)("span",null,(0,s.v_)(i.isFolder?"删除文件夹":"删除文件"),1)])])])])):(0,a.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 _=k,y=i(9267),w=(i(5331),i(5616),i(4275)),F=i(9559),C=i(2687),T=(i(8785),i(9623)),x=(i(6711),i(47));i(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"],z={class:"tags-to-add-section"},U={key:0,class:"tags-container"},B={key:1,class:"empty-message"},P={class:"action-buttons"},W={class:"tab-content"},$={key:0,class:"common-tags-section"},O={class:"tags-container"},R={key:1,class:"empty-message"},N={class:"tab-content"},M={class:"tab-description"},j={class:"action-buttons"};function V(e,t,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=w.v$,m=F.KR,p=w.q,g=y.kZ;return(0,a.uX)(),(0,a.Wv)(g,{title:"批量标签管理",modelValue:l.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{default:(0,a.k6)(()=>[(0,a.Lk)("div",S,[(0,a.bF)(p,{modelValue:o.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>o.activeTab=e),type:"border-card"},{default:(0,a.k6)(()=>[(0,a.bF)(f,{label:"添加",name:"add"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",L,[(0,a.Lk)("p",E,"为选中的 "+(0,s.v_)(l.fileCount)+" 个文件添加标签",1),(0,a.Lk)("div",A,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{onClick:l.handleAddInputTag,type:"primary"},{default:(0,a.k6)(()=>[(0,a.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,a.uX)(),(0,a.CE)("div",I,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.suggestions,e=>((0,a.uX)(),(0,a.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,D))),128))])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",z,[t[3]||(t[3]=(0,a.Lk)("h4",null,"待添加的标签",-1)),o.tagsToAdd.length>0?((0,a.uX)(),(0,a.CE)("div",U,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.tagsToAdd,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.removeFromToAdd(e),class:"tag-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,a.uX)(),(0,a.CE)("div",B," 暂无待添加标签 "))]),(0,a.Lk)("div",P,[(0,a.bF)(d,{type:"primary",onClick:l.executeAddTags,loading:o.loading,disabled:0===o.tagsToAdd.length},{default:(0,a.k6)(()=>[...t[4]||(t[4]=[(0,a.eW)(" 添加到所有文件 ",-1)])]),_:1},8,["onClick","loading","disabled"])])])]),_:1}),(0,a.bF)(f,{label:"移除",name:"remove"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",W,[t[6]||(t[6]=(0,a.Lk)("p",{class:"tab-description"},"移除选中文件的共有标签",-1)),o.commonTags.length>0?((0,a.uX)(),(0,a.CE)("div",$,[t[5]||(t[5]=(0,a.Lk)("h4",null,"共有标签",-1)),(0,a.Lk)("div",O,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.commonTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,a.uX)(),(0,a.CE)("div",R," 选中的文件没有共有标签 "))])]),_:1}),(0,a.bF)(f,{label:"清空",name:"clear"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",N,[(0,a.Lk)("p",M,"清空选中的 "+(0,s.v_)(l.fileCount)+" 个文件的所有标签",1),(0,a.bF)(m,{title:"⚠️警告",type:"warning",description:"此操作将清空所有选中文件的标签,且不可恢复",closable:!1,style:{"margin-bottom":"20px"},center:""}),(0,a.Lk)("div",j,[(0,a.bF)(d,{type:"danger",onClick:l.handleClearAllTags,loading:o.loading},{default:(0,a.k6)(()=>[...t[7]||(t[7]=[(0,a.eW)(" 确认清空所有标签 ",-1)])]),_:1},8,["onClick","loading"])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue","width","onClose"])}i(4114),i(1701),i(3110);var X=i(1219),Z=i(2933),K=i(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),i=[];for(const a of t)if(a.ok){const e=await a.json();i.push(e.tags||[])}i.length>0?this.commonTags=i[0].filter(e=>i.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",V],["__scopeId","data-v-dacf7742"]]);var q=H,Q=i(813);i(4896);const Y={class:"tag-management-container"},J={class:"input-section"},ee={key:0,class:"suggestions-panel"},te=["onClick"],ie={class:"current-tags-section"},ae={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,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=x.S2,h=T.WK,u=C.u,f=(0,a.g2)("Loading"),m=Q.tk,p=y.kZ;return(0,a.uX)(),(0,a.Wv)(p,{title:"标签管理",modelValue:l.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>l.visible=e),width:l.dialogWidth,onClose:l.handleClose},{footer:(0,a.k6)(()=>[(0,a.Lk)("span",ce,[(0,a.bF)(d,{onClick:l.handleClose},{default:(0,a.k6)(()=>[...t[5]||(t[5]=[(0,a.eW)("关闭",-1)])]),_:1},8,["onClick"])])]),default:(0,a.k6)(()=>[(0,a.Lk)("div",Y,[(0,a.Lk)("div",J,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{onClick:l.handleAddTag,type:"primary"},{default:(0,a.k6)(()=>[(0,a.bF)(c,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","onKeyup","onInput"]),o.showSuggestions&&o.suggestions.length>0?((0,a.uX)(),(0,a.CE)("div",ee,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.suggestions,e=>((0,a.uX)(),(0,a.CE)("div",{key:e,class:"suggestion-item",onClick:t=>l.selectSuggestion(e)},(0,s.v_)(e),9,te))),128))])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",ie,[t[2]||(t[2]=(0,a.Lk)("h4",null,"当前标签",-1)),o.currentTags.length>0?((0,a.uX)(),(0,a.CE)("div",ae,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.currentTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,closable:"",onClose:t=>l.handleRemoveTag(e),class:"tag-item"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,a.uX)(),(0,a.CE)("div",ne," 暂无标签 "))]),(0,a.Lk)("div",se,[t[4]||(t[4]=(0,a.Lk)("h4",null,"常用标签",-1)),o.popularTags.length>0?((0,a.uX)(),(0,a.CE)("div",re,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.popularTags,e=>((0,a.uX)(),(0,a.Wv)(u,{key:e,onClick:t=>l.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):o.loadingPopularTags?((0,a.uX)(),(0,a.CE)("div",oe,[(0,a.bF)(m,{class:"is-loading"},{default:(0,a.k6)(()=>[(0,a.bF)(f)]),_:1}),t[3]||(t[3]=(0,a.eW)(" 加载中... ",-1))])):((0,a.uX)(),(0,a.CE)("div",le," 暂无常用标签 "))])])]),_:1},8,["modelValue","width","onClose"])}var he=i(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=i(5558),ge=(i(8075),i(6810)),be=(i(4396),i(4885),i(9869)),ve=(i(415),i(3565),i(7009));i(8450);const ke={class:"detail-actions"},_e={class:"preview-section"},ye={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,i,n,r,o){const l=(0,a.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=y.kZ;return(0,a.uX)(),(0,a.Wv)(b,{title:"文件详情",modelValue:o.visible,"onUpdate:modelValue":t[13]||(t[13]=e=>o.visible=e),width:o.dialogWidth},{default:(0,a.k6)(()=>[(0,a.Lk)("div",ke,[(0,a.bF)(c,{type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"download",style:{"margin-right":"3px"}}),t[14]||(t[14]=(0,a.eW)(" 下载 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"tags",style:{"margin-right":"3px"}}),t[15]||(t[15]=(0,a.eW)(" 标签 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"ban",style:{"margin-right":"3px"}}),t[16]||(t[16]=(0,a.eW)(" 黑名单 ",-1))]),_:1}),(0,a.bF)(c,{type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"user-plus",style:{"margin-right":"3px"}}),t[17]||(t[17]=(0,a.eW)(" 白名单 ",-1))]),_:1}),(0,a.bF)(c,{type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,a.k6)(()=>[(0,a.bF)(l,{icon:"trash-alt",style:{"margin-right":"3px"}}),t[18]||(t[18]=(0,a.eW)(" 删除 ",-1))]),_:1})]),(0,a.bF)(u,{modelValue:r.activeTab,"onUpdate:modelValue":t[11]||(t[11]=e=>r.activeTab=e),onTabClick:o.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,a.k6)(()=>[(0,a.bF)(h,{label:"原始链接",name:"originUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.originUrl,"onUpdate:modelValue":t[5]||(t[5]=e=>i.urls.originUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"Markdown",name:"mdUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.mdUrl,"onUpdate:modelValue":t[6]||(t[6]=e=>i.urls.mdUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"HTML",name:"htmlUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.htmlUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>i.urls.htmlUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,a.bF)(h,{label:"BBCode",name:"bbUrl"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.bbUrl,"onUpdate:modelValue":t[8]||(t[8]=e=>i.urls.bbUrl=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),i.file?.metadata?.TgFileId?((0,a.uX)(),(0,a.Wv)(h,{key:0,label:"TG File ID",name:"tgId"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.tgId,"onUpdate:modelValue":t[9]||(t[9]=e=>i.urls.tgId=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,a.Q3)("",!0),i.file?.metadata?.S3Location?((0,a.uX)(),(0,a.Wv)(h,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{modelValue:i.urls.S3Location,"onUpdate:modelValue":t[10]||(t[10]=e=>i.urls.S3Location=e),readonly:"",onClick:o.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,a.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,a.Lk)("div",_e,[(0,a.Lk)("div",ye,[o.isVideo?((0,a.uX)(),(0,a.CE)("video",{key:0,src:i.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[12]||(t[12]=(...e)=>o.openImageLink&&o.openImageLink(...e))},null,8,we)):o.isAudio?((0,a.uX)(),(0,a.CE)("audio",{key:1,src:i.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Fe)):o.isImage?((0,a.uX)(),(0,a.Wv)(f,{key:2,src:i.fileLink,fit:"contain",lazy:"",class:"image-preview",onClick:o.openImageLink},null,8,["src","onClick"])):((0,a.uX)(),(0,a.Wv)(l,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,a.bF)(g,{border:"",column:o.descColumn},{default:(0,a.k6)(()=>[(0,a.bF)(m,{label:"文件名"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileName||i.file?.name),1)]),_:1}),(0,a.bF)(m,{label:"文件类型"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileType||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"文件大小"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.FileSize?i.file.metadata.FileSize+" MB":"未知"),1)]),_:1}),(0,a.bF)(m,{label:"上传时间"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(o.uploadTime),1)]),_:1}),(0,a.bF)(m,{label:"渠道类型/名称"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.Channel||"未知")+" / "+(0,s.v_)(i.file?.metadata?.ChannelName||"-"),1)]),_:1}),(0,a.bF)(m,{label:"访问状态/审查"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(o.accessType)+" / "+(0,s.v_)(i.file?.metadata?.Label||"无"),1)]),_:1}),(0,a.bF)(m,{label:"上传IP"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.UploadIP||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"上传地址"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(i.file?.metadata?.UploadAddress||"未知"),1)]),_:1}),(0,a.bF)(m,{label:"文件标签"},{default:(0,a.k6)(()=>[i.file?.metadata?.Tags&&i.file?.metadata?.Tags.length>0?((0,a.uX)(),(0,a.CE)("div",Ce,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.file?.metadata?.Tags,e=>((0,a.uX)(),(0,a.Wv)(p,{key:e,size:"small"},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1024))),128))])):((0,a.uX)(),(0,a.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:""})}},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?.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isAudio(){const e=this.file?.name?.toLowerCase()||"";return e.endsWith(".mp3")||e.endsWith(".wav")||e.endsWith(".ogg")||e.endsWith(".flac")},isImage(){const e=this.file?.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},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-529f3c7f"]]);var Ee=Le,Ae=i(4880),Ie=(i(4318),i(7815)),De=(i(2907),i(8507));i(213);const ze={class:"list-col list-col-checkbox"},Ue=["src"],Be=["src"],Pe=["title"],We={class:"filename-start"},$e={class:"filename-end"},Oe={class:"list-col list-col-tags"},Re={key:1,class:"list-empty"},Ne={class:"list-col list-col-channel"},Me={class:"list-col list-col-channel-name"},je={key:0,class:"channel-name-box"},Ve={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,i,r,o,l){const c=(0,a.g2)("font-awesome-icon"),d=De.R7;return(0,a.uX)(),(0,a.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,a.Lk)("div",ze,[(0,a.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,a.uX)(),(0,a.Wv)(c,{key:0,icon:"check",class:"check-icon"})):(0,a.Q3)("",!0)],2)]),(0,a.Lk)("div",{class:"list-col list-col-preview",onClick:t[1]||(t[1]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[l.isFolder?((0,a.uX)(),(0,a.Wv)(c,{key:0,icon:"folder-open",class:"list-folder-icon"})):l.isVideo?((0,a.uX)(),(0,a.CE)("video",{key:1,src:i.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Ue)):l.isImage?((0,a.uX)(),(0,a.CE)("img",{key:2,src:i.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,Be)):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:"file",class:"list-file-icon"}))]),(0,a.Lk)("div",{class:"list-col list-col-name",onClick:t[2]||(t[2]=(...e)=>l.handlePreviewClick&&l.handlePreviewClick(...e))},[(0,a.Lk)("span",{class:"filename-ellipsis",title:l.displayName},[(0,a.Lk)("span",We,(0,s.v_)(l.fileNameStart),1),(0,a.Lk)("span",$e,(0,s.v_)(l.fileNameEnd),1)],8,Pe)]),(0,a.Lk)("div",Oe,[!l.isFolder&&i.item.metadata?.Tags&&i.item.metadata.Tags.length>0?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(i.item.metadata.Tags.slice(0,3),(e,t)=>((0,a.uX)(),(0,a.CE)("span",{key:t,class:"color-tag",style:(0,s.Tr)({background:l.getTagColor(t)})},(0,s.v_)(e),5))),128)),i.item.metadata.Tags.length>3?((0,a.uX)(),(0,a.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,s.Tr)({background:l.getTagColor(3)})},"+"+(0,s.v_)(i.item.metadata.Tags.length-3),5)):(0,a.Q3)("",!0)],64)):((0,a.uX)(),(0,a.CE)("span",Re,"-"))]),(0,a.Lk)("div",Ne,(0,s.v_)(l.isFolder?"-":i.item.metadata?.Channel||i.item.channelTag||"-"),1),(0,a.Lk)("div",Me,[!l.isFolder&&i.item.metadata?.ChannelName?((0,a.uX)(),(0,a.CE)("div",je,(0,s.v_)(i.item.metadata.ChannelName),1)):((0,a.uX)(),(0,a.CE)("span",Ve,"-"))]),(0,a.Lk)("div",Xe,[!l.isFolder&&i.item.metadata?.UploadIP?((0,a.uX)(),(0,a.CE)("div",Ze,(0,s.v_)(i.item.metadata.UploadIP),1)):((0,a.uX)(),(0,a.CE)("span",Ke,"-"))]),(0,a.Lk)("div",Ge,(0,s.v_)(l.isFolder?"-":i.item.metadata?.FileSize?i.item.metadata.FileSize+" MB":"-"),1),(0,a.Lk)("div",He,(0,s.v_)(l.uploadDate),1),(0,a.Lk)("div",qe,[l.isFolder?((0,a.uX)(),(0,a.CE)(a.FK,{key:1},[(0,a.bF)(d,{content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,n.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,a.bF)(c,{icon:"copy"})])]),_:1}),(0,a.bF)(d,{content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[7]||(t[7]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(c,{icon:"file-export"})])]),_:1})],64)):((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[(0,a.bF)(d,{content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.bF)(c,{icon:"copy"})])]),_:1}),(0,a.bF)(d,{content:"下载",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,a.bF)(c,{icon:"download"})])]),_:1}),(0,a.bF)(d,{content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(c,{icon:"file-export"})])]),_:1})],64)),(0,a.bF)(d,{content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[8]||(t[8]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.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=i(683),it=(i(5385),i(850));i(8736);const at={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,i,r,o,l){const c=it.dI,d=(0,a.g2)("font-awesome-icon"),h=ve.Zq,u=De.R7,f=tt.Ik;return(0,a.uX)(),(0,a.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,a.k6)(()=>[(0,a.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,a.Lk)("div",at,["White"===i.item.metadata?.ListType?((0,a.uX)(),(0,a.CE)("div",nt,(0,s.v_)(l.channelTag),1)):"Block"===i.item.metadata?.ListType||"adult"===i.item.metadata?.Label?((0,a.uX)(),(0,a.CE)("div",st,(0,s.v_)(l.channelTag),1)):((0,a.uX)(),(0,a.CE)("div",rt,(0,s.v_)(l.channelTag),1)),i.item.metadata?.Tags&&i.item.metadata?.Tags.length>0?((0,a.uX)(),(0,a.CE)("div",ot,[(0,a.bF)(d,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,a.eW)(" "+(0,s.v_)(i.item.metadata.Tags[0])+" ",1),i.item.metadata.Tags.length>1?((0,a.uX)(),(0,a.CE)("span",lt," (+"+(0,s.v_)(i.item.metadata.Tags.length-1)+") ",1)):(0,a.Q3)("",!0)])):(0,a.Q3)("",!0)]),l.isVideo?((0,a.uX)(),(0,a.CE)(a.FK,{key:0},[o.videoLoading?((0,a.uX)(),(0,a.CE)("div",ct,[...t[20]||(t[20]=[(0,a.Lk)("div",{class:"skeleton-animation"},null,-1)])])):o.videoError?((0,a.uX)(),(0,a.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,a.bF)(d,{icon:"exclamation-triangle",class:"error-icon"}),t[21]||(t[21]=(0,a.Lk)("span",{class:"error-text"},"加载失败",-1))])):(0,a.Q3)("",!0),(0,a.bo)((0,a.Lk)("video",{src:i.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,a.uX)(),(0,a.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,a.bF)(d,{icon:"music",class:"file-icon audio-icon"})])):l.isImage?((0,a.uX)(),(0,a.Wv)(h,{key:2,"preview-teleported":!0,src:i.fileLink,"preview-src-list":i.previewSrcList,fit:"cover",lazy:"",class:"image-preview"},{placeholder:(0,a.k6)(()=>[...t[22]||(t[22]=[(0,a.Lk)("div",{class:"skeleton-wrapper"},[(0,a.Lk)("div",{class:"skeleton-animation"})],-1)])]),error:(0,a.k6)(()=>[(0,a.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,a.bF)(d,{icon:"image",class:"error-icon"}),t[23]||(t[23]=(0,a.Lk)("span",{class:"error-text"},"加载失败",-1))])]),_:1},8,["src","preview-src-list"])):((0,a.uX)(),(0,a.CE)("div",ht,[(0,a.bF)(d,{icon:"file",class:"file-icon"})])),(0,a.Lk)("div",ut,[(0,a.Lk)("div",ft,[(0,a.Lk)("span",mt,(0,s.v_)(l.displayName),1)]),(0,a.Lk)("div",pt,[(0,a.Lk)("div",gt,[(0,a.bF)(u,{disabled:i.disableTooltip,content:"详情",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,n.D$)(t=>e.$emit("detail"),["stop"]))},[(0,a.bF)(d,{icon:"info-circle"})])]),_:1},8,["disabled"])]),(0,a.Lk)("div",bt,[(0,a.bF)(u,{disabled:i.disableTooltip,content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"下载",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,n.D$)(t=>e.$emit("download"),["stop"]))},[(0,a.bF)(d,{icon:"download"})])]),_:1},8,["disabled"]),(0,a.bF)(u,{disabled:i.disableTooltip,content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.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.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isAudio(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp3")||e.endsWith(".wav")||e.endsWith(".ogg")||e.endsWith(".flac")},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(){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,i=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;i?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const i=e.target;t?i.play().catch(()=>{}):(i.pause(),i.currentTime=0)}}};const _t=(0,h.A)(kt,[["render",vt],["__scopeId","data-v-51323bac"]]);var yt=_t;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,i,r,o,l){const c=it.dI,d=(0,a.g2)("font-awesome-icon"),h=De.R7,u=tt.Ik;return(0,a.uX)(),(0,a.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,a.k6)(()=>[(0,a.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,a.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,a.bF)(d,{icon:"folder-open",class:"folder-icon-svg"})]),(0,a.Lk)("div",wt,[(0,a.Lk)("div",Ft,[(0,a.Lk)("span",Ct,(0,s.v_)(l.folderName),1)]),i.showActions?((0,a.uX)(),(0,a.CE)("div",Tt,[t[9]||(t[9]=(0,a.Lk)("div",{class:"action-bar-left"},null,-1)),(0,a.Lk)("div",xt,[(0,a.bF)(h,{disabled:i.disableTooltip,content:"复制链接",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,n.D$)(t=>e.$emit("copy"),["stop"]))},[(0,a.bF)(d,{icon:"copy"})])]),_:1},8,["disabled"]),(0,a.bF)(h,{disabled:i.disableTooltip,content:"移动",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,n.D$)(t=>e.$emit("move"),["stop"]))},[(0,a.bF)(d,{icon:"file-export"})])]),_:1},8,["disabled"]),(0,a.bF)(h,{disabled:i.disableTooltip,content:"删除",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,n.D$)(t=>e.$emit("delete"),["stop"]))},[(0,a.bF)(d,{icon:"trash-alt"})])]),_:1},8,["disabled"])])])):(0,a.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,i,n,s,r){return"card"===i.type?((0,a.uX)(!0),(0,a.CE)(a.FK,{key:0},(0,a.pI)(i.count,e=>((0,a.uX)(),(0,a.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,a.Lk)("div",{class:"skeleton-image"},null,-1),(0,a.Lk)("div",{class:"skeleton-info"},[(0,a.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===i.type?((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(i.count,e=>((0,a.uX)(),(0,a.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,a.Fv)('
',10)])]))),128)):(0,a.Q3)("",!0)}var Dt={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const zt=(0,h.A)(Dt,[["render",It],["__scopeId","data-v-71848b62"]]);var Ut=zt,Bt=i(1095),Pt=(i(7128),i(2086)),Wt=(i(670),i(8830),i(3597),i(6011));const $t={class:"container"},Ot={class:"header-content"},Rt={class:"search-card"},Nt={class:"actions"},Mt={class:"el-dropdown-link"},jt={class:"el-dropdown-link"},Vt={class:"el-dropdown-link"},Xt={class:"breadcrumb-container"},Zt={class:"mobile-directory-path"},Kt={class:"breadcrumb desktop-only"},Gt=["title"],Ht={key:0,class:"content"},qt={key:1,class:"list-view"},Qt={class:"list-header"},Yt={class:"list-col list-col-checkbox"},Jt={class:"pagination-container"},ei={class:"pagination-center"},ti={class:"pagination-right"},ii={class:"page-total"},ai={class:"page-jump"},ni={class:"dialog-section"},si={class:"section-content"},ri={class:"dialog-section"},oi={class:"section-header"},li={class:"section-content"},ci={class:"setting-item"},di={key:0,class:"setting-item"},hi={class:"dialog-action"};function ui(e,t,i,r,o,l){const c=Wt.A,d=(0,a.g2)("font-awesome-icon"),h=T.WK,u=Pt.c6,m=Pt.Iy,p=Pt.dW,g=De.R7,b=Ae.bZ,v=Bt.WZ,k=Bt.vp,w=Ut,F=At,C=yt,S=et,L=Ie.aQ,E=x.S2,A=Ae.ZO,I=Ae.lX,D=Ee,z=ge.ll,U=ge.MQ,B=pe.qi,P=y.kZ,W=me,$=q,O=_,R=f;return(0,a.uX)(),(0,a.CE)("div",$t,[(0,a.bF)(I,null,{default:(0,a.k6)(()=>[(0,a.bF)(b,null,{default:(0,a.k6)(()=>[(0,a.Lk)("div",Ot,[(0,a.bF)(c,{activeTab:"dashboard"}),(0,a.Lk)("div",Rt,[(0,a.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,a.k6)(()=>[(0,a.bF)(d,{icon:"search",class:"search-icon",onClick:l.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","onKeyup"])]),(0,a.Lk)("div",Nt,[(0,a.bF)(p,{onCommand:l.sort,"hide-on-click":!1},{dropdown:(0,a.k6)(()=>[(0,a.bF)(m,null,{default:(0,a.k6)(()=>[(0,a.bF)(u,{command:"dateDesc"},{default:(0,a.k6)(()=>[...t[21]||(t[21]=[(0,a.eW)("按时间倒序",-1)])]),_:1}),(0,a.bF)(u,{command:"nameAsc"},{default:(0,a.k6)(()=>[...t[22]||(t[22]=[(0,a.eW)("按名称升序",-1)])]),_:1})]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("span",Mt,[(0,a.bF)(d,{icon:l.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"全选此页",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:l.selectPageIcon,class:"header-icon",onClick:l.handleSelectPage},null,8,["icon","onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{onCommand:l.handleBatchAction,"hide-on-click":!1,disabled:0===o.selectedFiles.length},{dropdown:(0,a.k6)(()=>[(0,a.bF)(m,null,{default:(0,a.k6)(()=>[(0,a.bF)(u,{command:"copy"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"copy",class:"batch-action-item-icon"}),t[23]||(t[23]=(0,a.eW)(" 复制 ",-1))]),_:1}),(0,a.bF)(u,{command:"delete"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"trash-alt",class:"batch-action-item-icon"}),t[24]||(t[24]=(0,a.eW)(" 删除 ",-1))]),_:1}),(0,a.bF)(u,{command:"download"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"download",class:"batch-action-item-icon"}),t[25]||(t[25]=(0,a.eW)(" 下载 ",-1))]),_:1}),(0,a.bF)(u,{command:"move"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"file-export",class:"batch-action-item-icon"}),t[26]||(t[26]=(0,a.eW)(" 移动 ",-1))]),_:1}),(0,a.bF)(u,{command:"tagManagement"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"tags",class:"batch-action-item-icon"}),t[27]||(t[27]=(0,a.eW)(" 标签管理 ",-1))]),_:1}),(0,a.bF)(u,{command:"ban"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"ban",class:"batch-action-item-icon"}),t[28]||(t[28]=(0,a.eW)(" 加入黑名单 ",-1))]),_:1}),(0,a.bF)(u,{command:"white"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"user-plus",class:"batch-action-item-icon"}),t[29]||(t[29]=(0,a.eW)(" 加入白名单 ",-1))]),_:1})]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("span",jt,[(0,a.bF)(d,{icon:"ellipsis-h",class:(0,s.C4)(["header-icon",{disabled:0===o.selectedFiles.length}])},null,8,["class"])])]),_:1},8,["onCommand","disabled"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"链接格式",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.Lk)("span",Vt,[(0,a.bF)(d,{icon:"link",class:"header-icon",onClick:t[1]||(t[1]=e=>o.showUrlDialog=!0)})])]),_:1},8,["disabled"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"card"===o.viewMode?"列表视图":"卡片视图",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"card"===o.viewMode?"list":"th-large",class:"header-icon",onClick:l.toggleViewMode},null,8,["icon","onClick"])]),_:1},8,["disabled","content"]),(0,a.bF)(g,{disabled:l.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"sign-out-alt",class:"header-icon",onClick:l.handleLogout},null,8,["onClick"])]),_:1},8,["disabled"])])])]),_:1}),(0,a.bF)(A,{class:"main-container"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",Xt,[(0,a.Lk)("div",{class:"mobile-directory-trigger",onClick:t[2]||(t[2]=e=>o.showMobileDirectoryDrawer=!0)},[(0,a.bF)(d,{icon:"folder-open",class:"mobile-directory-icon"}),(0,a.Lk)("span",Zt,(0,s.v_)(o.currentPath&&o.currentPath.split("/").filter(Boolean).length>0?o.currentPath.split("/").filter(Boolean).pop():"根目录"),1),(0,a.bF)(d,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,a.Lk)("div",Kt,[(0,a.bF)(k,{separator:"/"},{default:(0,a.k6)(()=>[(0,a.bF)(v,{onClick:t[3]||(t[3]=e=>l.navigateToFolder(""))},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(o.currentPath.split("/").filter(Boolean),(e,t)=>((0,a.uX)(),(0,a.Wv)(v,{key:t,onClick:e=>l.navigateToFolder(o.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,a.k6)(()=>[(0,a.eW)((0,s.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,a.Lk)("span",{class:"stats-badge",title:`共 ${e.$data.Number} 个文件`},[(0,a.bF)(d,{icon:"database",class:"stats-badge-icon"}),(0,a.eW)(" "+(0,s.v_)(o.Number),1)],8,Gt)]),"card"===o.viewMode?((0,a.uX)(),(0,a.CE)("div",Ht,[o.loading?((0,a.uX)(),(0,a.Wv)(w,{key:0,type:"card",count:15})):((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(l.paginatedTableData,(e,t)=>((0,a.uX)(),(0,a.CE)(a.FK,{key:t},[l.isFolder(e)?((0,a.uX)(),(0,a.Wv)(F,{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:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onTouchstart:i=>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,a.uX)(),(0,a.Wv)(C,{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:i=>l.openDetailDialog(t,e.name),onCopy:i=>l.handleCopy(t,e.name),onMove:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:i=>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,a.uX)(),(0,a.CE)("div",qt,[(0,a.Lk)("div",Qt,[(0,a.Lk)("div",Yt,[(0,a.Lk)("span",{class:(0,s.C4)(["custom-checkbox",{checked:l.isSelectAll,indeterminate:l.isIndeterminate}]),onClick:t[4]||(t[4]=e=>l.handleSelectAllPage(!l.isSelectAll))},[l.isSelectAll?((0,a.uX)(),(0,a.Wv)(d,{key:0,icon:"check",class:"check-icon"})):l.isIndeterminate?((0,a.uX)(),(0,a.Wv)(d,{key:1,icon:"minus",class:"check-icon"})):(0,a.Q3)("",!0)],2)]),t[30]||(t[30]=(0,a.Lk)("div",{class:"list-col list-col-preview"},"预览",-1)),t[31]||(t[31]=(0,a.Lk)("div",{class:"list-col list-col-name"},"文件名",-1)),t[32]||(t[32]=(0,a.Lk)("div",{class:"list-col list-col-tags"},"标签",-1)),t[33]||(t[33]=(0,a.Lk)("div",{class:"list-col list-col-channel"},"渠道类型",-1)),t[34]||(t[34]=(0,a.Lk)("div",{class:"list-col list-col-channel-name"},"渠道名称",-1)),t[35]||(t[35]=(0,a.Lk)("div",{class:"list-col list-col-address"},"上传地址",-1)),t[36]||(t[36]=(0,a.Lk)("div",{class:"list-col list-col-size"},"大小",-1)),t[37]||(t[37]=(0,a.Lk)("div",{class:"list-col list-col-date"},"上传时间",-1)),t[38]||(t[38]=(0,a.Lk)("div",{class:"list-col list-col-actions"},"操作",-1))]),o.loading?((0,a.uX)(),(0,a.Wv)(w,{key:0,type:"list",count:15})):((0,a.uX)(!0),(0,a.CE)(a.FK,{key:1},(0,a.pI)(l.paginatedTableData,(e,t)=>((0,a.uX)(),(0,a.Wv)(S,{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:i=>l.openDetailDialog(t,e.name),onCopy:i=>l.handleCopy(t,e.name),onFolderCopy:t=>l.handleFolderCopy(e.name),onMove:i=>l.handleMove(t,e.name),onDelete:i=>l.handleDelete(t,e.name),onDownload:t=>l.handleDownload(e.name),onTouchstart:i=>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,a.Lk)("div",Jt,[(0,a.Lk)("div",ei,[(0,a.bF)(L,{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,a.bF)(E,{type:"primary",onClick:l.refreshFileList,class:"refresh-btn"},{default:(0,a.k6)(()=>[(0,a.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,a.uX)(),(0,a.Wv)(E,{key:0,type:"primary",onClick:l.loadMoreData,loading:o.loading,class:"load-more"},{default:(0,a.k6)(()=>[...t[39]||(t[39]=[(0,a.eW)(" 加载更多 ",-1)])]),_:1},8,["onClick","loading"])):(0,a.Q3)("",!0)]),(0,a.Lk)("div",ti,[(0,a.Lk)("span",ii,"共 "+(0,s.v_)(l.realTotalPages)+" 页",1),(0,a.Lk)("div",ai,[t[41]||(t[41]=(0,a.Lk)("span",null,"跳至",-1)),(0,a.bF)(h,{modelValue:o.jumpPage,"onUpdate:modelValue":t[5]||(t[5]=e=>o.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,n.jR)(l.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,a.bF)(E,{size:"small",type:"primary",onClick:l.handleJumpPage,class:"jump-btn"},{default:(0,a.k6)(()=>[...t[40]||(t[40]=[(0,a.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1})]),_:1}),(0,a.bF)(D,{modelValue:o.showdetailDialog,"onUpdate:modelValue":t[6]||(t[6]=e=>o.showdetailDialog=e),file:o.detailFile,fileLink:l.getFileLink(o.detailFile?.name),urls:l.allUrl,onDownload:t[7]||(t[7]=e=>l.handleDownload(o.detailFile?.name)),onTagManagement:t[8]||(t[8]=e=>l.handleTagManagement(o.detailFile?.name)),onBlock:t[9]||(t[9]=e=>l.handleBlock(o.detailFile?.name)),onWhite:t[10]||(t[10]=e=>l.handleWhite(o.detailFile?.name)),onDelete:t[11]||(t[11]=e=>l.handleDetailDelete(o.detailFile?.name))},null,8,["modelValue","file","fileLink","urls"]),(0,a.bF)(P,{title:"链接格式",modelValue:o.showUrlDialog,"onUpdate:modelValue":t[16]||(t[16]=e=>o.showUrlDialog=e),width:l.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",ni,[t[48]||(t[48]=(0,a.Lk)("div",{class:"section-header"},[(0,a.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,a.Lk)("div",si,[(0,a.bF)(U,{modelValue:o.defaultUrlFormat,"onUpdate:modelValue":t[12]||(t[12]=e=>o.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,a.k6)(()=>[(0,a.bF)(z,{label:"originUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"link",class:"radio-icon"}),t[42]||(t[42]=(0,a.Lk)("span",null,"原始链接",-1))]),_:1}),(0,a.bF)(z,{label:"mdUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"code",class:"radio-icon"}),t[43]||(t[43]=(0,a.Lk)("span",null,"Markdown",-1))]),_:1}),(0,a.bF)(z,{label:"htmlUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"code-branch",class:"radio-icon"}),t[44]||(t[44]=(0,a.Lk)("span",null,"HTML",-1))]),_:1}),(0,a.bF)(z,{label:"bbUrl",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"quote-right",class:"radio-icon"}),t[45]||(t[45]=(0,a.Lk)("span",null,"BBCode",-1))]),_:1}),(0,a.bF)(z,{label:"tgId",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"paper-plane",class:"radio-icon"}),t[46]||(t[46]=(0,a.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,a.bF)(z,{label:"s3Location",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"cloud",class:"radio-icon"}),t[47]||(t[47]=(0,a.Lk)("span",null,"S3链接",-1))]),_:1})]),_:1},8,["modelValue"])])]),(0,a.Lk)("div",ri,[(0,a.Lk)("div",oi,[t[49]||(t[49]=(0,a.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,a.bF)(g,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,a.k6)(()=>[(0,a.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,a.Lk)("div",li,[(0,a.Lk)("div",ci,[t[50]||(t[50]=(0,a.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,a.bF)(B,{modelValue:o.useCustomUrl,"onUpdate:modelValue":t[13]||(t[13]=e=>o.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===o.useCustomUrl?((0,a.uX)(),(0,a.CE)("div",di,[t[51]||(t[51]=(0,a.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,a.bF)(h,{modelValue:o.customUrlPrefix,"onUpdate:modelValue":t[14]||(t[14]=e=>o.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",hi,[(0,a.bF)(E,{type:"primary",onClick:t[15]||(t[15]=e=>o.showUrlDialog=!1),class:"confirm-btn"},{default:(0,a.k6)(()=>[...t[52]||(t[52]=[(0,a.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,a.bF)(W,{modelValue:o.showTagDialog,"onUpdate:modelValue":t[17]||(t[17]=e=>o.showTagDialog=e),fileId:o.currentTagFile,onTagsUpdated:l.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,a.bF)($,{modelValue:o.showBatchTagDialog,"onUpdate:modelValue":t[18]||(t[18]=e=>o.showBatchTagDialog=e),selectedFiles:o.selectedFiles,onTagsUpdated:l.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,a.bF)(O,{modelValue:o.showMobileActionModal,"onUpdate:modelValue":t[19]||(t[19]=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,a.bF)(R,{modelValue:o.showMobileDirectoryDrawer,"onUpdate:modelValue":t[20]||(t[20]=e=>o.showMobileDirectoryDrawer=e),currentPath:o.currentPath,onNavigate:l.navigateToFolder,onGoBack:l.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"])])}i(1148),i(116),i(7588),i(3579),i(7642),i(8004),i(3853),i(5876),i(2475),i(5024),i(1698),i(4603),i(7566),i(8721);var fi=i(8401),mi=i(4813),pi=i.n(mi);i(8335);class gi{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,i=!1,a=""){try{let n=this.getLocalFileList();if(i){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(a)){const e=t.substring(a.length).split("/");if(e.length>1){const t=a+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(),i=t.files.filter(t=>t.name.startsWith(e+"/")),a=t.directories.filter(t=>t.startsWith(e+"/"));return{files:i,directories:a}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}async refreshFileList(e,t="",i="",a=""){t=t.trim();try{let n=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;i&&(n+=`&includeTags=${encodeURIComponent(i)}`),a&&(n+=`&excludeTags=${encodeURIComponent(a)}`);const s=await(0,K.A)(n,{method:"GET"}),r=await s.json();return r.isIndexedResponse||X.nk.warning("索引构建中,当前搜索和排序结果可能不准确,请稍后再试。"),this.saveFileList(r)}catch(n){return console.error("Error refreshing file list:",n),!1}}async loadMoreFiles(e,t="",i="",a="",n=60){t=t.trim();try{const s=this.getLocalFileList(),r=s.files.length;let o=`/api/manage/list?dir=${e}&start=${r}&count=${n}&search=${encodeURIComponent(t)}`;i&&(o+=`&includeTags=${encodeURIComponent(i)}`),a&&(o+=`&excludeTags=${encodeURIComponent(a)}`);const l=await(0,K.A)(o,{method:"GET"}),c=await l.json();return s.files.push(...c.files),this.saveFileList(s)}catch(s){return console.error("Error loading more files:",s),{files:[],directories:[]}}}}const bi=new gi;var vi=i(2388),ki={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:""}},components:{DashboardTabs:Wt.A,TagManagementDialog:me,BatchTagDialog:q,SkeletonLoader:Ut,FileCard:yt,FolderCard:At,FileListItem:et,FileDetailDialog:Ee,MobileActionSheet:_,MobileDirectoryDrawer:f},computed:{...(0,fi.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},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,i=t+this.pageSize;let a=e.slice(t,i);const n=a.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return a.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)))))}),a.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="未知"}),a},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||"未知"}:{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||"未知"}},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,i=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(i,t.name);break;case"copy":this.handleCopy(i,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(i,t.name);break;case"delete":this.handleDelete(i,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 i=e.target;t?i.play().catch(()=>{}):(i.pause(),i.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let i=0;while(e>=1024&&i0?1:0)+" "+t[i]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let i=this.search;const a=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;i=i.replace(a,(e,i)=>(t.push(i.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;i=i.replace(n,(t,i)=>(e.push(i.toLowerCase())," ")),this.searchKeywords=i.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()},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 i=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(`此操作将永久删除${i?"文件夹":"该文件"}, 是否继续?`,"提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{(0,K.A)(`/api/manage/delete/${t}?folder=${i}`,{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),bi.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,i)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[i].name);-1!==e&&this.tableData.splice(e,1),bi.removeFile(this.selectedFiles[i].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 i=null;t.length>0&&(i=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"}),i=await t.json();i.files&&i.files.length>0&&(n=n.concat(i.files))}catch(a){console.error(`获取文件夹 ${e.name} 内容失败:`,a)}if(i&&i.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(a){i&&i.close(),console.error("批量复制链接失败:",a),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 i="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":i=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":i=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":i=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":i=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":i=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":i=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":i=`${this.rootUrl}${t}`;break;case"mdUrl":i=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":i=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":i=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":i=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":i=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(i).then(()=>this.$message.success("复制文件链接成功")):this.copyToClipboardFallback(i)},async loadMoreData(){this.loading=!0;try{await bi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags),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),i=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),i.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),i.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(i)},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,i)=>{if("confirm"===e){const e=t.inputValue,a=(0,vi.G)(e);if(!a.valid)return void this.$message.error(a.error);i()}else i()}}).then(({value:e})=>{const i=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/"),a=this.tableData.find(e=>e.name===t).isFolder;i!==this.currentPath?(0,K.A)(`/api/manage/move/${t}?folder=${a}&dist=${i}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("请求失败");{const e=this.tableData.findIndex(e=>e.name===t);if(-1!==e){const n=i+t.split("/").pop();bi.moveFile(t,n,a,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,i)=>{if("confirm"===e){const e=t.inputValue,a=(0,vi.G)(e);if(!a.valid)return void this.$message.error(a.error);i()}else i()}}).then(({value:e})=>{const t=e.replace(/^\/+/,"")+(e.endsWith("/")||""===e?"":"/");if(t===this.currentPath)return void this.$message.warning("目标文件夹不能是当前文件夹");const i=this.selectedFiles.map(e=>{const i=e.isFolder;return(0,K.A)(`/api/manage/move/${e.name}?folder=${i}&dist=${t}`,{method:"GET"})});Promise.all(i).then(e=>{let i=0;e.forEach((e,a)=>{if(e.ok){i++;const e=this.selectedFiles[a];e.selected=!1;const n=this.tableData.findIndex(t=>t.name===e.name);if(-1!==n){const i=t+e.name.split("/").pop();bi.moveFile(e.name,i,e.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-i,!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(pi()),t=e.folder("files"),i={},a=this.selectedFiles.map(async e=>{if(e.isFolder)return;const a=await fetch(this.getFileLink(e.name)),n=await a.blob();let s=e.metadata?.FileName||e.name;if(i[s]){const t=s.substring(s.lastIndexOf(".")),a=s.substring(0,s.lastIndexOf("."));s=`${a}(${i[s]})${t}`,i[e.name]++}else i[s]=1;t.file(s,n)});Promise.all(a).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 i=["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"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const i=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const i=["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"],a=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=i.includes(a)}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,i=this.filteredTableData.filter(e=>e.isFolder).length,a=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-i-a);n>0&&(await bi.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n),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 i=e.split("/");if(""===this.currentPath)t=i[0];else{const i=e.substring(this.currentPath.length);t=i.split("/")[0]}}else t=e;const i=20;if(t.length>i){const e=Math.floor((i-3)/2),a=Math.ceil((i-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-a)}`}return t},getFileName(e){let t=e.split("/").pop();const i=20;if(t.length>i){const e=Math.floor((i-3)/2),a=Math.ceil((i-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-a)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const i=e.substring(0,t),a=Math.min(i.length,Math.floor(.6*e.length));return i.substring(0,a)}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 i=e.substring(t),a=e.substring(0,t),n=Math.min(8,Math.floor(.2*a.length));return"…"+a.substring(a.length-n)+i}const i=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-i)},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=bi.getLocalFileList(),t=new Set(e.directories||[]),i=e.files||[],a=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=i.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...a,...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 bi.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags);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 i="External"===t?.Channel,a=i?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return a;case"mdUrl":return`![${n}](${a})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${a}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return a}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:"正在获取文件列表..."});try{const i=await(0,K.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),a=await i.json();if(t.close(),!a.files||0===a.files.length)return void this.$message.warning("文件夹为空,没有可复制的链接");const n=a.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(i){t.close(),console.error("复制文件夹链接失败:",i),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()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error("同步数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl}};const _i=(0,h.A)(ki,[["render",ui],["__scopeId","data-v-8a2e65f0"]]);var yi=_i}}]); +//# sourceMappingURL=278.3023ac4f.js.map \ No newline at end of file diff --git a/js/278.3023ac4f.js.gz b/js/278.3023ac4f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f07be7d4b0e17ca5a37e9abcb8db7c302c8f4b04 GIT binary patch literal 49304 zcmV)CK*GNtiwFP!000023go?OZzD^VAO^o?{{}@*^JZKISxk~rQAvjADwWh-({-z^ z>oK?c^77ItGAKri%+zEirBaC;81O9Y4{LZocx+(TyBGtuVPL(xAJ)Jcm>JKXneLwb zVZkLue!y*B!Gi5c%WapJ^@6X)TjbU7bYuj$!kIK4PttfPxGjBeI+!dB;t z^;vaH?k%y|jK-*WxlR|}Xw-h%8{^xqzaPxk(KKUm~{`H^#@^Aj( zzx$v6@^An0f2~xXR4c#ytN-$s|I7dR#kN0U8~&{^2kG z@xSfikNFaPEL`0M}UfBS#_>L2~xzy7y>``3T->;L|L|K&gaZ+`V}{`}Yf zVNp3e)Z4(qPh(X0Jp3;^D=z+D;`vJi@Tk}gNOFg?ezfJx;?*BsKUIi?|1na_Mdj(Z_jVF;P2DJ&Vl&$ zc`NO1?~teO_xP9(_n$t6zy5xgryo8&SXfz&HKsen-8yFRPl5R?ac@blHAJq2DjU79|k*WjhoYOx%6fV z6b3+4%!CnM&>xTJSnZd{W19^{TRg+2B40=xqOB|hJ*v#@JWf1lEtPP=32F6{LD*c< z=sa8WlX@LRUI_5hoou~ZKN#JKThL@ks8?-1S!ZmSRuPWGXS%+Go~sC_r26dn@r#qw zAOGa#AN};zSFhiE{hz;m_x{5lfAh1Se;b}nXLNqPV86InuA=zzPm(lSUtNE^`PA~; zo$mg@)81kI390s3lSUlIHhk2qVB!%@aEzCDif3dr#tYKIYeMDx@SLpiid13T(Rp=` zkg$19v-dZb^v&F(sJ|GfqJ1&5~{WHt0MLPv{weT*4d4Aw*O5wx)VfdVMjoG!xT zIG)jGnYXCdk*bkTSCxzD2qz>vI%?yXc%52?27~T~9UXP?lK6x9(DV0e3=IbDO>}g0 z5FB*zl(Yx);X$Vs!PiWjK`C$eS>`3Eu7AhY@1^y7iu7vFn!kuy7uZ0&9o`?{#Kw_I%o9bo6NonOQOzAo-0)#o8V(0tRIAM!4O}ePE-yI$k-tY;51rOoIIB$KD5FtU z5$(c+0DIRYYOYz7^}-|xZ-&s)2l#vjpI&P-M**an&;HcH)QqG}7R~6#H`W}d^*Z8s z;w3w?5#SXgfKv%aG%voZY#WDwlQ9|$4mRF$cTv0^&Fb|r$?!pUkC3=l^JEG`B57%o zLXCXu?H1o!L?h_5uqG)%r@bBH_QNR={g}}t3YQi!$`Tr`p1cUN@S8Zfpa~~ScGht+ z?XeVDKHiUVBc8(u8-B+?2%VtIZB9xzFkry_VwV#%BW0gxWyR7}m`xW|v_+V1F^85aR|J?k_Z|ze zYnCnE=}CB1cg$5>f*8e0`KeaRF{h+Az@e&zPrC=i;;34{HMHI0xH(N|m{9?f(aZN{6zknR0kp-L<{V=|IrN?n4shwN4%+*8_nr>g2e_0@ z1nsBWG44E^_{b)HOe31GsiHQ0)_nK=&D#@ly9&?QG^l>p`mR;QE?{=xV(3+Q-HHtb zw8i-?d0%xn)9nV}oPTk0`s&&H6EXDpGR!Ene5*f#r+C+#f_85^#@)|h5UqhK4vyjs zxHd*weKu(CAM{zhj&3PoeN`ePt$sM@^}~7{QR3I=uyfe!wGZ2!UiW)?badng{NH{y zVq-!T7o2T9)Hmp24_1Rou*7?W&{|C$uEU+Y;?SKi+)4yz9pQw8b=IfflZLOy9h0yh z50ZY&#|=a5eV>ln`};MIexHrvF;Z-O!~dRcz1Akf6l=z{g@PZlKb!50(Y;-_Ms?6n{-%qWT0%Ozx6Ct)$^%_Vf5 zS~)9zGK$Z2#6EsalNIA-b*WjL=2N%$c00xg4?HWPPTIC*gObg2)TC)GMd;y{|f0K{UM?`OOf#YFKW zwfK^OTG1>dw;+t+bd^-UI|I53{ON)wEK9v5P7q!io(XB6RkNj}qn4SnWd zMq?0ZxcyF-G>kr6?&?`)+kNL&$ZgIVfZe2B2N0p3$YA(I%3o6b)O!<{K zf83Jt<8}#mKw0sYcX@lq3F_Q(Fw80Fz_Hr9hcwvIVAx??P=rHLt@3j~9HSXOM8i6H z$4|26Jc(DwlKgvcAW($id?3BP7F=5LHF4U2SY;+USYWt*)8?ElDPDod!w_YBNoH{2 zYp%0-Pe^L;IdS)bI#Kb=n>V9yMG?YhyUN%tnc`Put_VK9*xmdULU{6^mZ9VgIcw@m zhv-Tjf!AbWvaVF>DXCWRG5qr${`pAeaJ1of@HfmTenoCMCmyu0%i9JmoM)4R*0!J3 zYI|(6@m|RbAr*h|tHO0Mmw;atua>lUXW+Z%gtVX|?_@)I2w!eCdpEV(-t}e!DeYFb zCyG5IE&P(S`X6gG@7ad<2MAX`yngvJct%Ku-b?cIu!o;*a*UJ^R8oE6+iW~WvY~&_ zJM09VPP^4b*gM$Y?+6)|f3WrD`J)m8lO(Jb}QlQv%K)YJ8H`Ewd39%}f9 zy%t^%2BeGER*P|zEj(2BdDgz2^&-ruhwx3U<{gvJ^RbWWp||wT5$>Y;89uF(>iV); z54~fBS8Y^3M)*0~v)NI10;Zh>^XrPDZ>1=HrMH^(v_0C1Am&5P(ZCp0DR~n!xRgr)ub@I%&F25*lUi;&n2mZ|3uqW@?Z$$`VG?<9HqE zG+7+Fw>i3$SBF-&7JoJa{%mIRXAW1S1kaKuYhKc1N~3JEX<My>e5uJ&JC^D~Q>r|LdagD@@&dkV2 zX0wUOGn0aFhVoD;ITWYO7th{5o4h!Acl`F{*YDo|d8C?-i;p~|=BXtVeCtt^1Gd1z zJ_k2&mXBPge#uVLj~BYBl0xZ%%`*?F267a|UFO0?N(+_Bupiiy(VQUisuP!!&>JJZ!H(XY~dTDfyxCL@_3qOCBr$ ztm6H5Z!am7vcw3rnz!dbT}d!Mh-KxKTu~ahnP|3@jFH z&g0}HoGv`8X?Po}*ZFv(@>}s{li`SjBR1xk6BS-DS-o0eX$6#w!ivxzu%=vD(QFaV zDtlF1HHS50DJHX}Fq!kRhhtJ&ObXaGo2)eTc8iyUb0T<3gk-+Ynv>isUWDV~Lme;! zReTGqWI*8}7c4Q<52jd(Z2~Q^2lYjqlK}(;0X}vw`axclzm;!^DbT9ieIzj(Dm9x- zse5e|dfV6)08ZynD*%a{-+H)6PAH@CeOO^pnuXC6gzljt3*uc4kReRY*8mGex{43n z?-#Vfbt{wgG>el8K)iApCgF-^G)XIqFs+pfj5e$CG@tXU;+wNy&}k-LXFOoEkbW*UZ!A0|iQ^1p zUm|-MN6vX*R1ZQ;hcXx$CrwpV(!57N`Y0RMY97!cB0n|0)9uy^ExiZ6|6@K{uIdwq zvuEi|B<|x+;IoQw*p%udd4;sFIivG%z0Blmhx+1KS2W@8PSsA+Z#DfY4z1?PUJv;z zc4!TPXKr!WRBzG+trSCILm?j4BMA5-b?z~n&nNJKhN?*izIe?x`Z9o`pRcWF4NgA+ zagm370s6!)PsGmBQjt>489CP|p3z^VA4DH!XH0WK_DJbi7<#G+HN3)@7i&6e=2cxh zONk&x{csmE!#EpL%2BT;0@UAmM0IHXX}H;NwU7o=&bUIT~>n1@!R80+fp_` z0jRSg!&IW}t_NsyY0#?BL?BKy^D<6~Z^dgWs4Meb%zJ|`AnYsliO!z$CsrZk=f&*T zRY(xpeCj+4QZ4`&iCcIaW9jR7Mr$?rC8#+(b4Qj23?Q8i0zqM>Ve~~-38zzf2`85T zX61T8qYB_Gi_R+{hY`O)17JeM*U6>ysz8&Vu!N>KKq$XrH%n)TGx@%Zn%ROzUQu6G zsFh@zdN95>;cm;eJ1dQ%g2E3)V;oB92xt1>^<1q0G8(n5ergnH(|R2-aUGa?;V2!O zdz|S3xHN{!2BTVy2-R1gltf|-QfW7}m3GxVa+HkmlEl0qtn#}IPVZ1p#>oL@2|m3k zjvaKzx8l7Xp5=DnS4$k|v3Tl$BR&?af;`_vNAd#sE>rjYVLml5+j?!>W-z4muMd6amO_!Q2h^*_c9D1$hS!xDWK1Zl+sREKs z0Rz8#r%sZ^BU_JwF4YY>9iZ^-M{vz9iQlQ2q^WZ%NK#}At6%eJsGZHVSu5czyv%3< z;-HH4fWN*JrB0$5ooN~Ky5k1c_vBSZ6rxDo=J6eu zY$KG8gf!0|q{&vdeXpFXY~>ZO~}A@W=o3 zL3j7)p1XU=Di6(FI&ivIC!grw9Db=}x$n6$np>j(V9mRPhO_W&NgJZ=Dr&x!DgFGL zHXQs0$1{b%3%b0d38C^T#}Td^uf#TyBA?ABQgt=hS*^wZ-FG5a)TAqx>8zb7Bzxhk zI7q$ijcvA4ghPbw^_u`RirN@*lt$QPRwj}wW6_^HL<9c-R^&d7KTGXN@D)Ls0+JB( z;)q_0U!ZduxDaM@PYQ!UaiLbTKK2MPDo{K{-K?xaycKQ(7p+%kG^rBRc~Ot}3%F*9 zb*`v8S!K0OGkz&Q15*Ui$QR}`r`NJK#qcke@l>QZf_gI#ULrSAo@OM6cB{yk$IaPt z>9r8fwwR?QeYkC^A|BUVkt|(Vd0MNP%a{RAGmds-a0K6xC(vrU6?%34{-ab_G~16O zl3MDP8C*9~#St?hoIriSeGu_yvjM2Vdpp;X;%X??rM_14oNqU`nZ+M2FKKcd!p=ol ziQx6b3LFVG6dLglI=ybKymhW9+2Xv5!|Xta;ey0c2vbF=Yc zt@XJ;*vo7g$h1~#kuuf(%|-*5!+=nv6ZFA;)uLo)V8Uq-t28QDu7Z)`PF`z5H*Fj6*49B(@ zW<ZtGx|w#an8Z&w`8T(8OYR{hCuT|BNZ|^eX#s#vT8JdY5LFQv+7+(- zpekk(p9oG;$qFym*)zdLRuOjDJ!!GrOqXm*y@roCHY>w27M*)7Y?*N>!bzLUFwI^{ zvm`KPR@AdK$cAq930* z?)hL{ke30g!`Y0kPO*zEP@hi-_#40hG04cM;3;TjH1W!Cb}thrMWjscw@7M8*>E-k z(31z92>yILOat*2Kj(Ow=Xv&&(}9XJ&bx+Z8yYb&JSv6_FS@N^LqW0NQN4yC_7i3c{e-$pMXKbV)N>ahud?6_)bA z-9X{WsS2a1g~=ev6DBfDiHE>arr0eTg=5}~gU(BlkP4_SUq(W9Qo^W8qCjr9 z`~{B9J&zfFkO~Q@^_0iupN1U>6gyCS=MwTKAc{e?iq-31P<`>{T~!OSc$pPj(f7Pu zczL;G(-7*ziCD$%OJNXMs>NG`n*6bXH6`VJ6<;epGiT(&c5|e-D!2;6l!^AZP>Q#& z`5e3_Qi_jAuj5L*&Omqr`IYpNPT8E%8NC0bLa6ypJSE6R5w6a{oo~iGYgoQ!!!f!ny+7DFlq}b2M zBKHz3$O9+u`a#gkq?}mZ!4WFF5b~D=*nb=(n~m1aVNHb+783KfpP-yQu;oWCvU?O+ zifBORbc4V#6?TO6?nDVkeM4VwJz{iLbO@n3Ii^k z%spCZb}%@^4`BNOzkRoywA5CjjGqnKhxbWQ)wnzRa5Fu4umpp0jVvxs(qtwOtR6J< z^x^MqV5b5CDOcpmNt|=C8@&x%QO#(dYJCmD4LC;G_`yOU&`Nujl_}QiPQ-!#i6(KK zj<-&2i@ScOR6xpoak#!Pz=e#P;v@d5Vx_dXklIe^z;%ZYMl$-{errI|exs2htvd+= zPRGE-NlhY=QuiT^xoK@k3*EF1q($2OOG8gy8%4Sx0D;)EXm-rWWho4P3-gCg0eQTx z5eI=sicxD^t1g52Y9{5X^XrF@w~K_%w-0 zYa7{)7c7tkMLlfD=!fX7nS^ru8anR@}$zArQKhX2l`qC#LSR0#bB~(+hT4tfAV< z140lZo7V)cJe<9ZvQqx9)z{j`Ic$}vDVuKi{p`p}>1T}wV#H&EK@ZincJ8yxdLMSt zl8J%H=gtyp8J4T;y1SKvW}*6Wr&&fxi-0H)nqrX`Id0w3_LHErh=vl8dhk#4!~0_o zESl;bJvwUd*ZlTVg!ym3=I^714~BvML9HWx`0~eo?Vy9bj$fl-#D(DP^NuYH8}{L9 zeou@<|3L@kgU`KE(pQ2>e~*N&F!iAAgU_4RZ-K%1A^8RS$g+qQdL-*mXx0|xQDhG0 z$DYSpl0piH>Gt0@94Q=z?MJA4{jRpv12~FG-p5r5P}gVNlfdr;uFkge!7oGmH`21O z{N5EoucY?kbkV6&S`U{c@p7kgmOE)1jKxBJ=a0-s+A9ViFw)?K8w zbFWvEg1IWGe*M$`=syN=K#7$qWc~;Lp`Ga%??Co{@&}Op?aQwZx|3od==Xcgm*Uz^AcN;g$AZW}bma6r-fUX^yGxL)?wBEOqa7n~PxH@0_ou(JMbYIf zB|psvyi9>a-)LPz=Tg23^-q4AH>L?f3MwyTlZ;I--ogENy%cJRw5W8Ox!r;4v62w* zek`|OV0fO1F5E*F8*M+ZtKt1Vi)L@>B@ICxe5Zlkov2mft0#JZuO1DNA4>UeuLPKu zFinC^YYFCn-r^<~OU2N+u))&H04mW|bW0W$+6s&7Sboa40hXS!h@}fium<31J5ek9 zA>%AZEN)6z7&|HPce!(T#%NI5&v29`UxnGCxnhy0@ZQ=Db*@EZ?8$kelz*(kkIri= z*VF8$*9=}j^iDyy(=erq5e%ryhD((RoBKxnvxJ5heO}G>{zZ3k@MSe+CH~uDHQiRs z<9miU@2=F1T9%*nIsY+ z*VP)g#>7@kvnV*&%eATK+dYcmUU4Y6Yy`N>8d}?Ss}mwOPe~=?=#HmGv!Ww9mM#{Q zA-8NO$kS2_{mN!liguQB7lT89EilodHg9okC}$mA9K3BVUC0I7XL5Tv^4rE+<-XUfeprFFy?LgHSpe!*2E!X-#ZZiI>iV2d`kv_MU*59QG?Ij0u) znZpu7e@iX~KF28l*9I=So!xUb324CFy^Zw#*tHcLYX-rd0@ zfg^sQ#yA?ofSVI0m0q|^XbCAo6^egP;ae&5?6US@;66a^LD1;Sgze@II>~#E?yw3= zZX{yl*H5zMiX}f=#%I+)%WlC`W*MKAicux=3>uIO3I1BHnyQ~jrxx(+Df!Nz^gWZ? zvTVI2E-_RF1w$-dGNqqx>KVoWw*3lvBc;eiU| z=Akp8iuVP7hyMcHv3oI25uTzxb6ml2RN`!vV^Oa6#lkk9Nl2z|cn%sF*y>3T8*28| zOrwrgE!=7b+}Tbfk=&ozQRL9jI^x4Ru>HP1$lt?tfA90ui)}a{M2Jo4vmEb8f}%SWNAGR z2}=nC)_UQX8J4Ta{pek6OD<&NqO_7+sN{Rtw~Et*;=M!_S6?vCE9VxvYUn>`cv?GX zPdTzSh*LPW^978L9J7VaZunrOMsn3rc9=?+jKV15D{hE*_Yk(2x*81&DF#p*LU=K9 zExjLboCUsglyuj#mU}1%?d~p-L+3uF059WS$dFLF0Bi zkr(6@v!($pxx?O*S#O8;c(%t@HYphsVoe}zz`cVSy>uF)gC$7|$d(Wu$g=Pb%`Gh9 zARUEce4CZ(b#GA<0?1edNFLh!T=5_#WE0wWzGh(hu-WjGZ|K=iSyoK{D*jZG_|8g0 z{Rqx9xPyhD8*T;*GG;#7!Wi>I)Zo}|w_?g>`;oo9J58kRR_t0ne~~RW1n%6YeqaK3 z+!r6N#CYsJ>oyYTtD;Vwm;H%mIt-ds^3le2l$(z=56s-kT?YVUW)ME-$D z7{*?p)Dyk6t%hmSv6l9zY`%)h&8Tn+k=l%6<5F^L!eL3wJ(cY5w+{~p@eaECe!J%7 zG*wds7F227AH=oV{z0eRGDUMLtZCing*`^V&G$jwV-4Q;VBoh<-3uGMKElu|Ue*a4 z`0d`%57+>Fj}O}c8}N$5PS6#)es@MjTiS8amViXUH_Gzwb6R3f*(l)w&jL@*O(yt< zZHVW0bO0G*t}>_H=8^u6{C41}q;5+j^{}em?#V*6gAU549^?}bIyGi=Vz!36xdxmv%Vs1DfuDjlyI2ZvA+8AhU+b z9dv4&0;j?zg88dCXRt zMUU)HC}H%ChO;1?QjDTLl_48&k#?i%GN1LOy^ejQQ@YKiEg^BWv$HTr>3DLAOY2Cl z(!|X)_q!6(FD_jrcLt8zUIuzq+Dz|=8jnJm-WG5(%^E%!IIvpHZ}$lC{KIyQj@TIW z5o)U^{o=mxN4R5@2C|clQB(BFk$*2FkbUE)Y7Rk$kXW)x>lY-9&yq5EoVOyH_joWo)M zf>|DlNf3IC$C!`uIE@0(G6Ko6Zvq27HHC|vukVM~FV z8hoj2yU?Lpt+L{aVsU4|!6xWc>7vKK?Rl5X1K?oE6Z30WI=|0EU|P1k@#ig_B`W=G z4%zPLv-aKM!TT--mesl#lA`Vp5&qsSuQ2@_8%B+D2iyOfjuAf!$0IuCE)tk>YrE3| zJ-u9lt`#_CVZgr#*C?6o8bva2*(e$yO z@ui0X>FYN_nuIgSEj+36k?OgWd7H{Ro1;4HaG>2eamYW+o6}G|pStI9YI_89EPDc% zb)dE{G_&mP)jqUoPp*z7dLO#ajnZoZb{9RbF25I!a-LGgg@>U#UxJjo5CQwIp8ag{ z$Io7UIGOkd&tJZO$2o?5C!^Em84VD|UM4ilZb+##)eWr)o@c66WS_ht1l{}YW3}#i zITrv7p@DxethTB_wTkMQ5uW)6$o2MO0&zmjVtCLiY6;NnrMlyI7B{BYE4JAPy}Zq4 zG)Ce!sjjWLeX02h21-cGdNH+-3{xu|R)Il_!U0dg=RcOddH_%tc>a z*e1fbLbE9Xw+={qDz{&=AL6#$5+T|0m0-UMQl!qqrAP_KGx_H9*Ed7Fr5qVygBt5x7|x?L9hc$D~9pq5&x7;w3{Id{Ehm*QKvLAs8& zI@5q8{9OT5%+bPBVdA zb-BBb-d4N8Lr z-?Gbt?wzRcDPLkIKzj%~hOCBxdXGVMh+n|S%Ipfn462;RnX2Y=EtYZDkx)F>%3KUt>*6@e;E*$3 z)ug$Hsn)_}s5#sP2lduAXVI)egf2mX$RJ5T^>Dmg_wTukZ00gHV~zz};92H&5Q=ZggCV!?SA0P7!N%koo%tn?ssi z=QbG6753@_4`H0%HWcS3uBLC+!wyb>g?{yE#*RWoXFrIA7iSG4^UeUp&Cn7L6JsEM3zTG0D2e}H;c zx>;B|)o_QNYX`9uf}?``CTMfhg?vcpomxlO7UTpSEo~qG@sixKUzsQHuJlH(9 z!wMm!((o&rO(j1TnT5m|2yZNekeuY$33j{$h2{r6YApFn#uCD?uflUSwcRB`s#XUB zl~d1wA&aB0xb+jd@5BJDFe|FKEkZ1BuwJdKql+lMjw&9DA_(~iOlZKX?)HJJFhEEj zr8_4p#;7#lE5QU@iUacKft`ypoX58uzPJ~_!Vch7WQgal!Wn&jfqDG6;GM@-fhQFe6F+ZruOk(|kt6v)HIDWW4GSt3Bit#MQOQ%0Awv}}v(g>&VK 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 | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\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),r=0;r [$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[13] || (_cache[13] = $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[14] || (_cache[14] = _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[15] || (_cache[15] = _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[16] || (_cache[16] = _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[17] || (_cache[17] = _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[18] || (_cache[18] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n })]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $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)]),\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[12] || (_cache[12] = (...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 fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\",\n onClick: $options.openImageLink\n }, null, 8, [\"src\", \"onClick\"])) : (_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 })\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 const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\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 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');\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=529f3c7f&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=529f3c7f&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-529f3c7f\"]])\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, [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-animation\"\n }, null, -1)]))])) : $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[21] || (_cache[21] = _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[22] || (_cache[22] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-animation\"\n })], -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[23] || (_cache[23] = _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 const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\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 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 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=51323bac&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=51323bac&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-51323bac\"]])\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 \"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-card\"\n};\nconst _hoisted_4 = {\n class: \"actions\"\n};\nconst _hoisted_5 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_10 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_11 = [\"title\"];\nconst _hoisted_12 = {\n key: 0,\n class: \"content\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_14 = {\n class: \"list-header\"\n};\nconst _hoisted_15 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_16 = {\n class: \"pagination-container\"\n};\nconst _hoisted_17 = {\n class: \"pagination-center\"\n};\nconst _hoisted_18 = {\n class: \"pagination-right\"\n};\nconst _hoisted_19 = {\n class: \"page-total\"\n};\nconst _hoisted_20 = {\n class: \"page-jump\"\n};\nconst _hoisted_21 = {\n class: \"dialog-section\"\n};\nconst _hoisted_22 = {\n class: \"section-content\"\n};\nconst _hoisted_23 = {\n class: \"dialog-section\"\n};\nconst _hoisted_24 = {\n class: \"section-header\"\n};\nconst _hoisted_25 = {\n class: \"section-content\"\n};\nconst _hoisted_26 = {\n class: \"setting-item\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_28 = {\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_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, [_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\"])]), _createElementVNode(\"div\", _hoisted_4, [_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[21] || (_cache[21] = [_createTextVNode(\"按时间倒序\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [...(_cache[22] || (_cache[22] = [_createTextVNode(\"按名称升序\", -1)]))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_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[23] || (_cache[23] = _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[24] || (_cache[24] = _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[25] || (_cache[25] = _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[26] || (_cache[26] = _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[27] || (_cache[27] = _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[28] || (_cache[28] = _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[29] || (_cache[29] = _createTextVNode(\" 加入白名单 \", -1))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_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_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[1] || (_cache[1] = $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_8, [_createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_9, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : '根目录'), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[3] || (_cache[3] = $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_11)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\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_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[4] || (_cache[4] = $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[30] || (_cache[30] = _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\"\n }, \"预览\", -1)), _cache[31] || (_cache[31] = _createElementVNode(\"div\", {\n class: \"list-col list-col-name\"\n }, \"文件名\", -1)), _cache[32] || (_cache[32] = _createElementVNode(\"div\", {\n class: \"list-col list-col-tags\"\n }, \"标签\", -1)), _cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel\"\n }, \"渠道类型\", -1)), _cache[34] || (_cache[34] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel-name\"\n }, \"渠道名称\", -1)), _cache[35] || (_cache[35] = _createElementVNode(\"div\", {\n class: \"list-col list-col-address\"\n }, \"上传地址\", -1)), _cache[36] || (_cache[36] = _createElementVNode(\"div\", {\n class: \"list-col list-col-size\"\n }, \"大小\", -1)), _cache[37] || (_cache[37] = _createElementVNode(\"div\", {\n class: \"list-col list-col-date\"\n }, \"上传时间\", -1)), _cache[38] || (_cache[38] = _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 })) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\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_16, [_createElementVNode(\"div\", _hoisted_17, [_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[39] || (_cache[39] = [_createTextVNode(\" 加载更多 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, \"共 \" + _toDisplayString($options.realTotalPages) + \" 页\", 1), _createElementVNode(\"div\", _hoisted_20, [_cache[41] || (_cache[41] = _createElementVNode(\"span\", null, \"跳至\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $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[40] || (_cache[40] = [_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[6] || (_cache[6] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[7] || (_cache[7] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[8] || (_cache[8] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[9] || (_cache[9] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[10] || (_cache[10] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[11] || (_cache[11] = $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[16] || (_cache[16] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_21, [_cache[48] || (_cache[48] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $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[42] || (_cache[42] = _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[43] || (_cache[43] = _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[44] || (_cache[44] = _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[45] || (_cache[45] = _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[46] || (_cache[46] = _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[47] || (_cache[47] = _createElementVNode(\"span\", null, \"S3链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"div\", _hoisted_24, [_cache[49] || (_cache[49] = _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_25, [_createElementVNode(\"div\", _hoisted_26, [_cache[50] || (_cache[50] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [_cache[51] || (_cache[51] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[15] || (_cache[15] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[52] || (_cache[52] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $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[18] || (_cache[18] = $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[19] || (_cache[19] = $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[20] || (_cache[20] = $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 // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '') {\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 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) {\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 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.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 { 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 components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n MobileActionSheet,\n MobileDirectoryDrawer\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 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 };\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 };\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 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);\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);\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);\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 }).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=8a2e65f0&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=8a2e65f0&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-8a2e65f0\"]])\n\nexport default __exports__"],"names":["validateFolderPath","path","trim","valid","startsWith","error","invalidChars","test","includes","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","this","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","data","flush","cleanUp","raw","level","onData","pako","A","String","fromCharCode","file","O","utf8encode","I","name","m","_","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","folder","remove","generate","generateInternalStream","type","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","size","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","value","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","global","window","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","constructor","catch","race","immediate","assign","method","chunkSize","windowBits","memLevel","strategy","to","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","addEventListener","attachEvent","Function","callback","args","clearImmediate","source","_hoisted_1","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","default","modelValue","key","onClick","close","icon","active","currentPath","$event","navigate","pathParts","style","paddingLeft","goBack","props","Boolean","emits","computed","methods","$emit","__exports__","title","isFolder","handleAction","action","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_component_el_button","_component_el_input","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","_component_el_dialog","visible","width","dialogWidth","onClose","handleClose","activeTab","label","fileCount","inputTag","placeholder","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","loading","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","get","val","innerWidth","selectedFilesOnly","fileIds","map","watch","newVal","loadCommonTags","resetData","newTab","tagPromises","fetchWithAuth","encodeURIComponent","responses","allTags","response","ok","json","tags","every","console","clearTimeout","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","footer","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","components","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","round","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","FileName","FileType","FileSize","uploadTime","Channel","ChannelName","accessType","Label","UploadIP","UploadAddress","Tags","endsWith","TimeStamp","toLocaleString","listType","ListType","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","cleanUrl","open","_hoisted_18","_component_el_tooltip","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","content","placement","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","videoLoading","videoError","onMouseenter","handleVideoHover","onMouseleave","onFullscreenchange","handleFullscreenChange","onWebkitfullscreenchange","onLoadeddata","onError","handleVideoError","previewSrcList","disableTooltip","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","count","validator","Number","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_component_DashboardTabs","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","tempSearch","handleSearch","suffix","onCommand","sort","dropdown","command","sortIcon","selectPageIcon","handleSelectPage","handleBatchAction","showUrlDialog","viewMode","toggleViewMode","handleLogout","showMobileDirectoryDrawer","separator","navigateToFolder","paginatedTableData","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","layout","filteredTableData","pageSize","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","onAction","handleMobileAction","onNavigate","onGoBack","handleGoBack","FileManager","FILE_LIST_PATH","getLocalFileList","fileList","localStorage","getItem","parse","directories","saveFileList","setItem","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","ElMessage","loadMoreFiles","start","moreFiles","fileManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","MobileActionSheet","MobileDirectoryDrawer","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","selectPage","selectedPageFiles","some","userConfig","urlPrefix","location","origin","selectedCount","handler","newData","deep","newOption","newFormat","$store","commit","parentPath","colors","event","formatFileSize","bytes","isNaN","units","toFixed","searchText","excludeTagRegex","match","includeTagRegex","log","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","position","clip","top","execCommand","fetchFileList","num","init","localeCompare","videoElement","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","$prompt","inputValue","beforeClose","instance","validation","newKey","$nextTick","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","fetch","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","loadMoreDataUntilPage","targetPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","isExternal","baseUrl","mounted","adminUrlSettings"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/278.3023ac4f.js.map.gz b/js/278.3023ac4f.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..76f5f62f11af2e3696dc725bf86e30bb83afc8a8 GIT binary patch literal 114015 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 T7o;9_oNNCLBJ7C0px_4p@M>}P literal 0 HcmV?d00001 diff --git a/js/675.63e531de.js.gz b/js/675.63e531de.js.gz deleted file mode 100644 index d9d0cb85a9405770593efea663e00673886553c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48823 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 | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\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),r=0;r [$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 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_5 = {\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[13] || (_cache[13] = $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[14] || (_cache[14] = _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[15] || (_cache[15] = _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[16] || (_cache[16] = _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[17] || (_cache[17] = _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[18] || (_cache[18] = _createTextVNode(\" 删除 \", -1))]),\n _: 1\n })]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $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)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createVNode(_component_el_descriptions, {\n direction: \"vertical\",\n border: \"\",\n column: $options.columnNum\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: \"文件预览\",\n rowspan: $options.previewSpan,\n width: 300,\n align: \"center\"\n }, {\n default: _withCtx(() => [$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[12] || (_cache[12] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args))\n }, null, 8, _hoisted_2)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_3)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n fit: \"cover\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))]),\n _: 1\n }, 8, [\"rowspan\"]), _createVNode(_component_el_descriptions_item, {\n label: \"文件名\",\n \"class-name\": \"description-item\"\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 \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileType || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件大小(MB)\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.FileSize || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传时间\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"访问状态\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"渠道类型\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"渠道名称\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"审查结果\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Label || '无'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传IP\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"上传地址\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || '未知'), 1)]),\n _: 1\n }), _createVNode(_component_el_descriptions_item, {\n label: \"文件标签\",\n \"class-name\": \"description-item\"\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [(_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_5, \"暂无标签\"))]),\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 })\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%' : '800px';\n },\n columnNum() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n previewSpan() {\n return window.innerWidth < 768 ? 1 : 6;\n },\n isVideo() {\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 const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\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');\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' || 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 }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=4969770b&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=4969770b&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-4969770b\"]])\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, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx } 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 = [\"src\"];\nconst _hoisted_8 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_9 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_10 = {\n class: \"file-name-row\"\n};\nconst _hoisted_11 = {\n class: \"file-name\"\n};\nconst _hoisted_12 = {\n class: \"action-bar\"\n};\nconst _hoisted_13 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_14 = {\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[11] || (_cache[11] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[12] || (_cache[12] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[13] || (_cache[13] = $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(\"video\", {\n key: 0,\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[3] || (_cache[3] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, false))\n }, null, 40, _hoisted_7)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[5] || (_cache[5] = $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 loading: \"lazy\",\n decoding: \"async\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_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[6] || (_cache[6] = _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_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[7] || (_cache[7] = _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[8] || (_cache[8] = _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[9] || (_cache[9] = _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[10] || (_cache[10] = _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 };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\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 isAudio() {\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 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 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 },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) {\n video.play();\n } else {\n video.pause();\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play();\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=44e8627d&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=44e8627d&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-44e8627d\"]])\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=024a61ee&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=024a61ee&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-024a61ee\"]])\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-card\"\n};\nconst _hoisted_4 = {\n class: \"actions\"\n};\nconst _hoisted_5 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_10 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_11 = [\"title\"];\nconst _hoisted_12 = {\n key: 0,\n class: \"content\"\n};\nconst _hoisted_13 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_14 = {\n class: \"list-header\"\n};\nconst _hoisted_15 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_16 = {\n class: \"pagination-container\"\n};\nconst _hoisted_17 = {\n class: \"pagination-center\"\n};\nconst _hoisted_18 = {\n class: \"pagination-right\"\n};\nconst _hoisted_19 = {\n class: \"page-total\"\n};\nconst _hoisted_20 = {\n class: \"page-jump\"\n};\nconst _hoisted_21 = {\n class: \"dialog-section\"\n};\nconst _hoisted_22 = {\n class: \"section-content\"\n};\nconst _hoisted_23 = {\n class: \"dialog-section\"\n};\nconst _hoisted_24 = {\n class: \"section-header\"\n};\nconst _hoisted_25 = {\n class: \"section-content\"\n};\nconst _hoisted_26 = {\n class: \"setting-item\"\n};\nconst _hoisted_27 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_28 = {\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_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, [_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\"])]), _createElementVNode(\"div\", _hoisted_4, [_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[21] || (_cache[21] = [_createTextVNode(\"按时间倒序\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [...(_cache[22] || (_cache[22] = [_createTextVNode(\"按名称升序\", -1)]))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_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[23] || (_cache[23] = _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[24] || (_cache[24] = _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[25] || (_cache[25] = _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[26] || (_cache[26] = _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[27] || (_cache[27] = _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[28] || (_cache[28] = _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[29] || (_cache[29] = _createTextVNode(\" 加入白名单 \", -1))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_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_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[1] || (_cache[1] = $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_8, [_createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_9, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : '根目录'), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[3] || (_cache[3] = $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_11)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: 15\n })) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\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_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"span\", {\n class: _normalizeClass([\"custom-checkbox\", {\n 'checked': $options.isSelectAll,\n 'indeterminate': $options.isIndeterminate\n }]),\n onClick: _cache[4] || (_cache[4] = $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[30] || (_cache[30] = _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\"\n }, \"预览\", -1)), _cache[31] || (_cache[31] = _createElementVNode(\"div\", {\n class: \"list-col list-col-name\"\n }, \"文件名\", -1)), _cache[32] || (_cache[32] = _createElementVNode(\"div\", {\n class: \"list-col list-col-tags\"\n }, \"标签\", -1)), _cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel\"\n }, \"渠道类型\", -1)), _cache[34] || (_cache[34] = _createElementVNode(\"div\", {\n class: \"list-col list-col-channel-name\"\n }, \"渠道名称\", -1)), _cache[35] || (_cache[35] = _createElementVNode(\"div\", {\n class: \"list-col list-col-address\"\n }, \"上传地址\", -1)), _cache[36] || (_cache[36] = _createElementVNode(\"div\", {\n class: \"list-col list-col-size\"\n }, \"大小\", -1)), _cache[37] || (_cache[37] = _createElementVNode(\"div\", {\n class: \"list-col list-col-date\"\n }, \"上传时间\", -1)), _cache[38] || (_cache[38] = _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 })) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\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_16, [_createElementVNode(\"div\", _hoisted_17, [_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[39] || (_cache[39] = [_createTextVNode(\" 加载更多 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, \"共 \" + _toDisplayString($options.realTotalPages) + \" 页\", 1), _createElementVNode(\"div\", _hoisted_20, [_cache[41] || (_cache[41] = _createElementVNode(\"span\", null, \"跳至\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $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[40] || (_cache[40] = [_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[6] || (_cache[6] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[7] || (_cache[7] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[8] || (_cache[8] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[9] || (_cache[9] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[10] || (_cache[10] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[11] || (_cache[11] = $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[16] || (_cache[16] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_21, [_cache[48] || (_cache[48] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $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[42] || (_cache[42] = _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[43] || (_cache[43] = _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[44] || (_cache[44] = _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[45] || (_cache[45] = _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[46] || (_cache[46] = _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[47] || (_cache[47] = _createElementVNode(\"span\", null, \"S3链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"div\", _hoisted_24, [_cache[49] || (_cache[49] = _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_25, [_createElementVNode(\"div\", _hoisted_26, [_cache[50] || (_cache[50] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_27, [_cache[51] || (_cache[51] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[15] || (_cache[15] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[52] || (_cache[52] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $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[18] || (_cache[18] = $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[19] || (_cache[19] = $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[20] || (_cache[20] = $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 // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '') {\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 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) {\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 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.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 { 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 components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n MobileActionSheet,\n MobileDirectoryDrawer\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 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 };\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 };\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 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);\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);\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);\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 }).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=8a2e65f0&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=8a2e65f0&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-8a2e65f0\"]])\n\nexport default __exports__"],"names":["validateFolderPath","path","trim","valid","startsWith","error","invalidChars","test","includes","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","this","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","data","flush","cleanUp","raw","level","onData","pako","A","String","fromCharCode","file","O","utf8encode","I","name","m","_","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","folder","remove","generate","generateInternalStream","type","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","size","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","value","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","global","window","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","constructor","catch","race","immediate","assign","method","chunkSize","windowBits","memLevel","strategy","to","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","addEventListener","attachEvent","Function","callback","args","clearImmediate","source","_hoisted_1","class","_hoisted_2","_hoisted_3","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","default","modelValue","key","onClick","close","icon","active","currentPath","$event","navigate","pathParts","style","paddingLeft","goBack","props","Boolean","emits","computed","methods","$emit","__exports__","title","isFolder","handleAction","action","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_component_el_button","_component_el_input","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","_component_el_dialog","visible","width","dialogWidth","onClose","handleClose","activeTab","label","fileCount","inputTag","placeholder","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","loading","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","get","val","innerWidth","selectedFilesOnly","fileIds","map","watch","newVal","loadCommonTags","resetData","newTab","tagPromises","fetchWithAuth","encodeURIComponent","responses","allTags","response","ok","json","tags","every","console","clearTimeout","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","footer","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","components","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","round","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","direction","border","column","columnNum","rowspan","previewSpan","align","isVideo","src","fileLink","autoplay","muted","loop","handleVideoClick","isAudio","controls","isImage","fit","lazy","FileName","FileType","FileSize","uploadTime","accessType","Channel","ChannelName","Label","UploadIP","UploadAddress","Tags","endsWith","TimeStamp","toLocaleString","listType","ListType","video","paused","play","select","navigator","clipboard","writeText","_hoisted_18","_component_el_tooltip","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","content","placement","selected","tagColors","parts","getFileName","uploaded","toLocaleDateString","_component_el_checkbox","_component_el_card","onChange","onMouseenter","handleVideoHover","onMouseleave","previewSrcList","disableTooltip","isEnter","currentTime","folderName","showActions","count","validator","Number","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_component_DashboardTabs","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","tempSearch","handleSearch","suffix","onCommand","sort","dropdown","command","sortIcon","selectPageIcon","handleSelectPage","handleBatchAction","showUrlDialog","viewMode","toggleViewMode","handleLogout","showMobileDirectoryDrawer","separator","navigateToFolder","paginatedTableData","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","layout","filteredTableData","pageSize","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","onAction","handleMobileAction","onNavigate","onGoBack","handleGoBack","FileManager","FILE_LIST_PATH","getLocalFileList","fileList","localStorage","getItem","parse","directories","saveFileList","setItem","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","ElMessage","loadMoreFiles","start","moreFiles","fileManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","MobileActionSheet","MobileDirectoryDrawer","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","selectPage","selectedPageFiles","some","userConfig","urlPrefix","location","origin","selectedCount","handler","newData","deep","newOption","newFormat","$store","commit","parentPath","colors","event","formatFileSize","bytes","isNaN","units","toFixed","searchText","excludeTagRegex","match","includeTagRegex","log","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","position","clip","top","execCommand","fetchFileList","num","init","localeCompare","videoElement","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","$prompt","inputValue","beforeClose","instance","validation","newKey","$nextTick","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","fetch","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","loadMoreDataUntilPage","targetPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","isExternal","baseUrl","mounted","adminUrlSettings"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/675.63e531de.js.map.gz b/js/675.63e531de.js.map.gz deleted file mode 100644 index c800ca21a356e5d0be37b8b4c6c490edb9d6818e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112772 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

-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

  • l5j0-T!2fH>bUarXRPQi%vojgCl)ZUqmg>puBX@(61&?cmh1#$toRZ|HG!DVOL+q;8osM4 zoPGj_S8!h%`1$M&d>l+l3E3^|kM533Z=RJ) zueC3{v;H$MrPm)T-EsfDBs-rTVQ`yL&Y!;O9shFW!QZ?KXT7r**PrrpP;KS0(!S{+ zyU;M3J!X79>V0r~{0y`|ew2O&*7Gr<8c_;3-KYrjny12ot zUK4$eQLPuOrYkwduEN~4&#GEYw>P&Q(R|FZJOuHx30?rQAUt@^yZ5a!RYXjsl@5V{ zasHsLZB#pDlZZ{a6v|cAwK6ATdyqRsnu{rJjJ&RWHA(Nwo-3PVQS z)Y6yOk*%oEe~Q1BMGf61VLKCj{XLUrQAaUBoFzz?B&jA=*Jq6?DEk(1zshDZIbQEv zoe8<~5yzk08LNgOXB(M!`Ap~lnd+dC?;=Q;h-@w_IK@K9Ygr-%@)`~a$}vI2Tt1A% zX%ypGfO^#8z63&s+f)J`NVV7<(A@4xT%3SfF|{j*%R`K$h)fj;p&)VM?!5dG5x+2cy~{@Ax;`rlTae z5hgnc&s)%z7Qb$Ncw*_ncZYgd@k4j@DcwPG;mM$?-iwkH?qtS6CI~AsO#B7O;uoW2 zca_W!*CX>2LE^e}$xHF^POKd9gvywH7$r%u%TtoXTl#^NKsT{KU8>v!e0~DT0-P}N zmoW7-Mc~P0qTSeqJxe5nRPrSDh?6753L0*+7-xzhQegsE=!XJ{EIKbv{Iat_7G#}jLDD_&nH%6epFpaloH%(%&S4XfOFa^LBQ)Q*>yA}jNSOQG6o9ypd%bM zDR75D;ZOI&r`%eQ0YsAffBa%ky(0UbWcgJzP@eiocI-TMqx1PKFK0viQOH}I?e2gd zmO$F>A%23?EI_Wo@$WC-yE5|oZhBcv{tAi6Jwf#f_cyt0iz~AkUBA=^U$%Nn93@E! zAUrXTW8sFye}Y-8BKLXvRJ9hwazFSpMH$uZS3Gf%m-07E0_#EFalLd{{$$~IfU%L* z|89Ei9S4bil3kq;*>K{6MExWdA3le3<#Q>M#>o@HUg-qN?$8;bD*-c^*G7h!!X}|U z-gSvzw&rY#TBMym-O@3yb@Uh@xiTs@9VpEZM&$|uGlSotN`@;iO`PbSHBFAGGQgNF zvTIleAWZbDJOcthDt!`RBJ)TT?dL(JVCI{ETco z>v6`57%0=2khIaC_hC^mDydI|A!n`m8BuyTOnjL;lKh0XHU8c=%<90&$tk^j81e`Z zhf!|JF!gz>iCtVkInHa4aR>svaoS^c&w<26%uJK3Hb&mlJ9#b|38yb2DunO21dsL` zZy@eFdYuPJDVR@#OTH?KK!ucOO>h)qP{Pl5;hf0a@sWV>>v;*h3ed?bW{YEam1b

    shD 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 diff --git a/js/app.9064fae6.js b/js/app.659e81c1.js similarity index 94% rename from js/app.9064fae6.js rename to js/app.659e81c1.js index a85bf38..2d7a5c2 100644 --- a/js/app.9064fae6.js +++ b/js/app.659e81c1.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},3354:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(4068),s=(o(9436),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={computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars()})},watch:{useDarkMode(){this.setSiteIcon()}},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return;(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)}},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),C=o(5507),k=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const y=(0,n.Ef)(g),v=(0,r.Zf)();y.component("font-awesome-icon",l.gc);for(const[M,E]of Object.entries(k))y.component(M,E);const A=()=>{const e=document.documentElement;let t;if(C.A.state.cusDarkMode&&null!==C.A.state.useDarkMode)t=C.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}C.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},U=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},w=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)};C.A.dispatch("fetchUserConfig").then(()=>{A(),w(C.A.getters.userConfig),S(C.A.state.useDarkMode,C.A.getters.userConfig),C.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&C.A.state.cusDarkMode&&(U(t.useDarkMode),S(t.useDarkMode,C.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(A(),S(C.A.state.useDarkMode,C.A.getters.userConfig))}),y.use(C.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),y.use(C.A).use(b.A).use(a.A).use(v).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:"",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(282)]).then(o.bind(o,7618)),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(675)]).then(o.bind(o,8423)),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(891)]).then(o.bind(o,8891)),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+"."+{100:"fdd153ed",214:"21f2745a",226:"f737e39a",282:"326e16ce",419:"714823b1",456:"bfb68f0d",600:"3d796c41",667:"bbd60d43",675:"63e531de",845:"1bb9a557",891:"cb14895d",917:"833cbf86"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{100:"205cfe37",119:"2a856832",214:"205cfe37",226:"6548e7b4",275:"bf4b380e",282:"ad42e268",419:"605c1f2d",667:"a3c83e09",675:"850ca348",845:"6b45e8e3",891:"6c1496b5",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},3354:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(4068),s=(o(9436),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),f={computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars()})},watch:{useDarkMode(){this.setSiteIcon()}},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return;(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)}},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)}}},p=o(1241);const h=(0,p.A)(f,[["render",u]]);var g=h,b=o(6915),C=o(5507),k=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const y=(0,n.Ef)(g),v=(0,r.Zf)();y.component("font-awesome-icon",l.gc);for(const[M,E]of Object.entries(k))y.component(M,E);const A=()=>{const e=document.documentElement;let t;if(C.A.state.cusDarkMode&&null!==C.A.state.useDarkMode)t=C.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}C.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},U=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},w=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)};C.A.dispatch("fetchUserConfig").then(()=>{A(),w(C.A.getters.userConfig),S(C.A.state.useDarkMode,C.A.getters.userConfig),C.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&C.A.state.cusDarkMode&&(U(t.useDarkMode),S(t.useDarkMode,C.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(A(),S(C.A.state.useDarkMode,C.A.getters.userConfig))}),y.use(C.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),y.use(C.A).use(b.A).use(a.A).use(v).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:"",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(282)]).then(o.bind(o,7618)),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(278)]).then(o.bind(o,5698)),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(891)]).then(o.bind(o,8891)),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+"."+{100:"fdd153ed",214:"21f2745a",226:"f737e39a",278:"3023ac4f",282:"326e16ce",419:"714823b1",456:"bfb68f0d",600:"3d796c41",667:"bbd60d43",845:"1bb9a557",891:"cb14895d",917:"833cbf86"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{100:"205cfe37",119:"2a856832",214:"205cfe37",226:"6548e7b4",275:"bf4b380e",278:"f6a0dd63",282:"ad42e268",419:"605c1f2d",667:"a3c83e09",845:"6b45e8e3",891:"6c1496b5",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;uqmir9t!~S@7hL_<9b^!V$JGE0w zkIwNAHimZCJto}o-M}5GX{zHpx!g*|Jk>;lr)>Sr5W&EihIfb_0KjQTgU^TQ6{C(|xMetLy#jLb@ zsWX+F!U~KX?qtF2gf5G61b;#BdI92^$H+roT@#Ehpfm}+QyV3DQN38^IdyEE@4BxV zE3$^W)G#+z6S(GzXDDtB#6N-c(sIb zx_j1S_mb;i$po!^T2OpVFrJKb@P=*SuIdcS8GcqWYgu^F^6i6+wMN+|B1naryTvFw zJ0okw#5kLbTN7%Er*J}f@zkF9Re(dXXDynt)+qf%Rm;<}GlHLmO}^RK=ZuqPv+PLR ziARfd@P-89UYLJJyo*Z6x|Cf9Z^mMR)i|AyoLs5Eu2LBboSvW4kVIIrXCdXEKxf}F zP6()4`VhaEm-%^K!!a|MjJEp_H=Ee8nB>)`2rlQ0Z#J#1EE(Hr;CZXr6yxkX1Zki1 zQFeY#Kz3FDNB(*2bvns&OzJzJ1I6m10dB`cvnhhFzZQS?wGY{@Y74gezAa--^613) z)Ki)pfhoX0(7_(^^&f0@+k0aV{_aihLbOxex z39o};ggUKuhsWI+qU~WjLY;PBg#B0`+6^xwGzh!Hc4rzQ+U@ltG@VWR!&xgqv=4+j z$>6ddcSA(`{XvAL)1==@x*bG^-Cl&k>GYEKdINt%hnHc5;%V3&UiK11FT+8EhMi74 zoeldaAB)Ku3cj)ESl*>n^2XYir^Jr!q1^3OFP@3c0MQV5Z}VZVKkT$CHEc({8v4EN zPzrOkvmMFC{>+@EU^gE?ic+zc)c7IrErQhns;jEpMa`R3+?1$=TF)yuS>KECC1Uj>5CP~^%XLW@fz-n&GKPl@7j=I_J=P+U7_ zzsqyE+29ne9{FTbaLbnr;st*< zRyc+-H#;A~2MQ`~HYH>yHJVB*INUG@i|o@3QD6tAn3yR-L8WYLCjQo0*6&pEU<=7ldBBY!8@HXD_q6NvIu{VJd0&hW9@v?!4)$Qb=<%eAag>)w&+3zT!~m; zy@e9GmHcoVfP|*a=F>e#31yDM<7D={9?Dd4YbB87mPhmUaXHm#vswHNoW6BNs`*@*dkgka3 zKF}PuMcdoD$5hybfTY{{<|RW;eCsa2*_HV5-4)&3-hO@a`MaO}`PZ-BTz~fU z%j+**z4#1}1^I-|Ka1ERe`1FUo_x3Zl)<}J#E8ndu-))!%7sP*=Ipv^15@_Na z4i<3mV|9CDjQNi;noZ21Pruo~A4j(NQGQ^^Puw?v5fz_36>Qr*whgl%WEoi7<6+A} zPHVCIE(ERDdAGy0!?%ma;PVQ}bg(+})lP>kl{*pPG+;#~^@jxzK#A6{b+6rxS~+|~ zQ(-#T(PB4!G#C0HF7$t~Tj)c!&_`;a570s%mxVqY3w;z8`rs?{F<0nAtuP;%v6x)B zG7=bz35k5NIu?^=Q~TfAAOk;J>KA)aAawW!YQa02ducZ0w=7)ju1e? zT04Kl*~xv?KKEdL_E=NMbVfBQj2Ax9`d!vR245b^ox7sxo(0JnuB2!-ae_unRg^ zj?IM0v6*;Zkdh+*PazY{rw3+J<+o7D~at2^0p(>fi!Y0th4}Rlg^A zQ-=C<+-r3w^tjfbG5lu(0n7K(70Ka?)IYnp_)){^%*5g~U#+B?zx(PHB_(7McrV{||LZ1}^O~002P+s9XR5 delta 2352 zcmV-03D5S3Cy6Jp83F+-vl;@^0T0YyoZYZ8o&|W%S#VA8inII!lLmj14tmEFhuwDP zK)`rMf0s2C{=8t~5c<)agy3*IB)mMuQh50^OZL$^vD{~9ANI$yGrSB>umjL1*{Pjc zdUTF|uraj5?lIwx?*{HjO;a7;$>mn+-TOWnKzJDr4$*Z1Rzvr&kWQr1I=y9m4|I%l z*zFyik9NDi$D`2?R$PBXi8Md0u&%OcD&tT6$SJh_{t>U20IQ*m;O}eiD}tYrEoP39Cv;hqBlrt~*9#EWJVqY!>Y8A50i{Xko!ThLi|WNPbUeAj)| zSdlf{rG~k&n!q(zB>&GCGi6t?VFK~(N*ibWt;_vPwk~1OI?sPcRgZkECP55#!K)>d z)7`TsyO&%COD1UT(}Ln_g7IXegEwpocU5Ot&hWF6SLO)uL2yBJ!{dFwMOYDs#>0&oe}&jZ1T;y#_iY(#l1C@T zw-%y<1UtIsk;@5n$Mh3c5BSKsl2A3IYB-_;4F*A)&1di^{A0OCiI_1r&Ma!bM=aIXNagW9uAz7(21Gb%(ca5Hk`Okz}#Jb$hMZ#B8i4UJ~kZ zI-Zadl(T;mB+)na0-cF76ri(p*lI;+mLy@XBN9a0VK+kUaMm7ldmPbryC0$1pfeDi zOL!f&Bh+d4Mc9u8qTTQ^LW8h7Y*onG=@Z-9U3@G^{0JPo_U%U*)$WjKh?u+xdB zvtb|QV=*~H!8aBi%e$0H-dOwcl-RL7l)K&P#WT?vAR2-wZ9eSvhn;q%hV7_VL%-J@ ziovvtXd8H+&brgiuq8^Z@TA)o?f$UTO25^M!&y5i<>sAu*b%MEQtn}|74uGaSjyd> zc6)zfC_1Iw{W$Di_NTo{?q2(nC!wh1j_oPI=dAWBXBcU3OHlfUTD+b$=Bb|Y^zB00 z%JuFbBS;=A2e6QKvw;})WrY#dh7iHE?;}o9Dms@HmEsLJK4MxQ9LRD-c??!YI}Ip< z1-EY=RCW4_O8^!es-gU34DKOhefRHcxtxD5vT1}yI!JfayoaLJ^AGn5@t2GLz{!xJ z2kYH9P4_M>PAZoX@49YtQS~zIr;l&>+*g6%GZeXUh|uB^iT5s%;!~n{ocTL30TkEH z89B`yEHyDAjH%7$a0C+d^9M0q@%Rp=xHGuASTdR#!SC{1ZZ)J91<0Jxur0cf0aqf{ zS8t(&ZY4h)2Oyzov-xz-Q9_yH@Hm-0uZJ>K+*%1_x#iKkeOyj;+H4ko1E+7Dk!t>y z&!4{Pj_1;KQ42)HrHyhzpIVG|cRQ+az&7w_f%&5_D#E-iVeOf<+da2?W{uzx zJf!x>34~xWh$spcel`g~YIEnEYq13vvB@4fxZtu<1g=*oAi%6A*4!3BSDW==V1kOZ1I zhl2$i{8-)I7-RmUjAj#a=+kdD@W+vDev}^=@)P$BU_`}dPX*g{k8Q*32U!Nz_ITK` zkkeZ1z6(L?b>8i8?eOj5G5EYfG99eWe6`bIOXW^PI1N})N&R5~1W=+iY~5>jqgD=ycvE%cFE=mWIS$7P`p$3h>4g+BNSeasd5P%F$wW-KOG zu8ai6VnQOHtd7N`+0_2GHpsxw7Ws2MErF3%zH?&^KFo!>V0nGP1nP2f?83|Vr6%<^ zY(Mrdtii1MRt5*^C50!3JMUCDX2cAOpV(U8Z&PKHh?c7@hRNTO5CJyga)!+>9bx*4eWvr zmSZzva%?8v7o?=f|5FHvV2Nus9adx%@0?3~c1Ad}<9L5Ui~WSch8Xin@jGr!Foc2} zENoZIz!?FTVnsR|qcVQh=sN!9NO z-jty}9rs$@2|cbgXbk_^K)~|-bVYLbBK6NME`HRoIy13&%~va_=I_3G#rSF!T( {\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 computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\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 return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n 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 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=7d6c298a\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=7d6c298a&lang=css\"\nimport \"./App.vue?vue&type=style&index=1&id=7d6c298a&lang=css\"\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: '', // 指定的渠道名称\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 + \".\" + {\"100\":\"fdd153ed\",\"214\":\"21f2745a\",\"226\":\"f737e39a\",\"282\":\"326e16ce\",\"419\":\"714823b1\",\"456\":\"bfb68f0d\",\"600\":\"3d796c41\",\"667\":\"bbd60d43\",\"675\":\"63e531de\",\"845\":\"1bb9a557\",\"891\":\"cb14895d\",\"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 + \".\" + {\"100\":\"205cfe37\",\"119\":\"2a856832\",\"214\":\"205cfe37\",\"226\":\"6548e7b4\",\"275\":\"bf4b380e\",\"282\":\"ad42e268\",\"419\":\"605c1f2d\",\"667\":\"a3c83e09\",\"675\":\"850ca348\",\"845\":\"6b45e8e3\",\"891\":\"6c1496b5\",\"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 = {\"100\":1,\"119\":1,\"214\":1,\"226\":1,\"275\":1,\"282\":1,\"419\":1,\"667\":1,\"675\":1,\"845\":1,\"891\":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__(3354); })\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","computed","mounted","this","$nextTick","initOverlayScrollbars","watch","useDarkMode","setSiteIcon","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","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","mutations","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","data","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.659e81c1.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/App.vue?0365","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 computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\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 return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n 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 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=7d6c298a\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=7d6c298a&lang=css\"\nimport \"./App.vue?vue&type=style&index=1&id=7d6c298a&lang=css\"\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: '', // 指定的渠道名称\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 + \".\" + {\"100\":\"fdd153ed\",\"214\":\"21f2745a\",\"226\":\"f737e39a\",\"278\":\"3023ac4f\",\"282\":\"326e16ce\",\"419\":\"714823b1\",\"456\":\"bfb68f0d\",\"600\":\"3d796c41\",\"667\":\"bbd60d43\",\"845\":\"1bb9a557\",\"891\":\"cb14895d\",\"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 + \".\" + {\"100\":\"205cfe37\",\"119\":\"2a856832\",\"214\":\"205cfe37\",\"226\":\"6548e7b4\",\"275\":\"bf4b380e\",\"278\":\"f6a0dd63\",\"282\":\"ad42e268\",\"419\":\"605c1f2d\",\"667\":\"a3c83e09\",\"845\":\"6b45e8e3\",\"891\":\"6c1496b5\",\"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 = {\"100\":1,\"119\":1,\"214\":1,\"226\":1,\"275\":1,\"278\":1,\"282\":1,\"419\":1,\"667\":1,\"845\":1,\"891\":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__(3354); })\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","computed","mounted","this","$nextTick","initOverlayScrollbars","watch","useDarkMode","setSiteIcon","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","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","mutations","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","data","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.9064fae6.js.map.gz b/js/app.659e81c1.js.map.gz similarity index 74% rename from js/app.9064fae6.js.map.gz rename to js/app.659e81c1.js.map.gz index ff4d2643a81bcaffcf0cdafc7c8e09158850d3b9..c9086298420dcb5bd420cdaf84d11eb3cb5a0806 100644 GIT binary patch delta 3931 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 O?EeEIg`+Ux!T