diff --git a/frontend-dist/css/870.16cbea0a.css b/frontend-dist/css/148.ff5f4652.css similarity index 60% rename from frontend-dist/css/870.16cbea0a.css rename to frontend-dist/css/148.ff5f4652.css index 280f2ac6..eb591cbc 100644 --- a/frontend-dist/css/870.16cbea0a.css +++ b/frontend-dist/css/148.ff5f4652.css @@ -1 +1 @@ -.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-f81fd314{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-f81fd314],.upload-list-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-f81fd314]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-f81fd314]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-f81fd314],.upload-list-container[data-v-f81fd314]{width:70vw}}.upload-list-card.upload-list-busy[data-v-f81fd314],.upload-list-container.upload-list-busy[data-v-f81fd314]{height:40vh}.upload-list-card.is-uploading[data-v-f81fd314]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-f81fd314]{position:relative;overflow:visible}.upload-card-glow[data-v-f81fd314]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-f81fd314]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-f81fd314]{width:70vw}}.upload-card-busy[data-v-f81fd314] .el-upload-dragger{height:17vh}[data-v-f81fd314] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-f81fd314] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-f81fd314] .el-upload-dragger.is-dragover,[data-v-f81fd314] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-f81fd314] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-f81fd314]{position:relative;background:none}.upload-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-f81fd314]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-f81fd314]{font-size:small}}.el-upload__text.upload-list-busy[data-v-f81fd314]{font-size:small}.el-icon--upload[data-v-f81fd314]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-f81fd314]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-f81fd314]{font-size:30px}}.paste-card[data-v-f81fd314]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-f81fd314]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-f81fd314]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-f81fd314]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-f81fd314 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-f81fd314] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-f81fd314]{height:17vh}.upload-card-textarea[data-v-f81fd314]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-f81fd314]{height:50%}.upload-card-textarea[data-v-f81fd314]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-f81fd314]:hover:before{opacity:1}.upload-card-textarea[data-v-f81fd314]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-f81fd314] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-f81fd314] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-f81fd314] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-f81fd314] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-f81fd314] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-f81fd314]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:#2563eb!important;border:none!important;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-f81fd314]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:hsla(0,0%,100%,.25);transition:left .6s ease}.paste-card-upload-button[data-v-f81fd314]:hover{transform:scale(1.02);box-shadow:none}.paste-card-upload-button[data-v-f81fd314]:hover:before{left:100%}.paste-card-upload-button[data-v-f81fd314]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-f81fd314]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-f81fd314]{margin-top:2%}.paste-card-method-group[data-v-f81fd314]{background:var(--paste-method-group-bg,rgba(37,99,235,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(37,99,235,.15))}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-f81fd314] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-f81fd314] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(37,99,235,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-f81fd314] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:#2563eb!important;color:#fff!important;box-shadow:none}@media (max-width:768px){.paste-card[data-v-f81fd314]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-f81fd314]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-f81fd314]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-f81fd314]:before{border-radius:11px}[data-v-f81fd314] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-f81fd314]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-f81fd314]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-f81fd314]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-f81fd314] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-f81fd314]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-f81fd314] .el-upload-dragger{position:relative;overflow:hidden}[data-v-f81fd314] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-f81fd314] .el-upload-dragger:after,[data-v-f81fd314] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-f81fd314] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-f81fd314 60s linear infinite}.upload-card[data-v-f81fd314]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-f81fd314 40s linear infinite,starPulse-f81fd314 4s ease-in-out infinite}@keyframes starScroll-f81fd314{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-f81fd314{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-f81fd314]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-f81fd314]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-f81fd314]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-f81fd314]:focus,.modern-action-btn[data-v-f81fd314]:focus-visible{outline:none!important}.modern-action-btn[data-v-f81fd314]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-f81fd314]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-f81fd314]:hover:before{opacity:.08}.modern-action-btn[data-v-f81fd314]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-f81fd314]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-f81fd314]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-f81fd314]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-f81fd314]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-f81fd314]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-f81fd314]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-f81fd314]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-f81fd314]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-f81fd314]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-f81fd314]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-f81fd314]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-f81fd314]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-f81fd314]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-f81fd314]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-579106c0]{background:var(--bg-color);min-height:100vh}.rotate[data-v-579106c0]{animation:spin-579106c0 2s ease-in-out}.scale[data-v-579106c0]{animation:scale-579106c0 .5s ease-in-out}@keyframes spin-579106c0{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-579106c0{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-579106c0{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-579106c0{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-579106c0{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-579106c0]{display:inline-block}.mobile-only[data-v-579106c0]{display:none}@media (max-width:768px){.desktop-only[data-v-579106c0]{display:none!important}.mobile-only[data-v-579106c0]{display:flex!important}}.toggle-dark-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-579106c0]{width:2rem;height:2rem}}.upload-method-icon[data-v-579106c0]{outline:none}.more-button .svg-inline--fa[data-v-579106c0],.upload-method-button .svg-inline--fa[data-v-579106c0]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-579106c0]{font-size:1.3em}.mobile-more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-579106c0]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-579106c0]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-579106c0]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-579106c0],.upload-folder-container[data-v-579106c0]{right:58px}}.upload-folder[data-v-579106c0]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-579106c0]{width:200px}@media (max-width:768px){.upload-folder[data-v-579106c0]{width:80px;height:2rem}.upload-folder.active[data-v-579106c0]{width:120px}}.directory-tree-trigger[data-v-579106c0]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-579106c0]{width:2rem;height:2rem}}.upload-folder[data-v-579106c0] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-579106c0] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-579106c0] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-579106c0]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-579106c0]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-579106c0]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-579106c0]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-579106c0]{margin-top:4px}.quick-toolbar-icon[data-v-579106c0]{font-size:16px}.quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(0deg)}.info-container[data-v-579106c0]:hover,.quick-toolbar-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-579106c0]:hover{transform:none}.toggle-dark-button[data-v-579106c0]:hover,.upload-method-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-579106c0]:hover,html.dark .upload-method-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-579106c0]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-579106c0]{gap:2px}.quick-toolbar-more[data-v-579106c0]{margin-top:3px}.quick-toolbar-icon[data-v-579106c0]{font-size:14px}}[data-v-579106c0] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-579106c0]{display:flex;justify-content:center;margin-top:20px}.header[data-v-579106c0]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-579106c0]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-579106c0 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-579106c0]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-579106c0]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-579106c0]:hover:after{width:80%}.main-title[data-v-579106c0]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-579106c0]{opacity:0}.title[data-v-579106c0]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-579106c0]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-579106c0]{animation:crayonWrite-579106c0 .82s steps(18) forwards,crayonScratch-579106c0 .16s steps(2) .82s 3}@keyframes float-579106c0{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-579106c0{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-579106c0{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-579106c0]{font-size:1.55rem;letter-spacing:1px}.title[data-v-579106c0]:hover{transform:scale(1.05)}}.upload-home[data-v-579106c0]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-579106c0]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-579106c0]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-579106c0]{padding-bottom:5px}.upload[data-v-579106c0]{top:-3.8vh}}.footer[data-v-579106c0]{height:6vh} \ No newline at end of file +.history-container[data-v-f70e7770]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-f70e7770]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-f70e7770]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-f70e7770]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-f70e7770]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-f70e7770]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-f70e7770]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-f70e7770]{display:flex;gap:10px}.header-right .el-button[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-f70e7770]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-f70e7770]{background:#dc2626;color:#fff}.history-content[data-v-f70e7770]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-f70e7770]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-f70e7770]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:1px solid var(--glass-border)}.grid-item[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-f70e7770]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-f70e7770],.grid-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-f70e7770]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-f70e7770]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-f70e7770]{opacity:1}.grid-actions[data-v-f70e7770]{display:flex;gap:15px}.grid-info[data-v-f70e7770]{padding:12px}.file-name[data-v-f70e7770]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-f70e7770]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-f70e7770]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);border:1px solid var(--glass-border);transition:all .3s ease}.list-item[data-v-f70e7770]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-f70e7770]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-f70e7770],.list-preview video[data-v-f70e7770]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-f70e7770]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-f70e7770]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-f70e7770]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-f70e7770]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-f70e7770]{display:flex;gap:8px}.empty-state[data-v-f70e7770]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-f70e7770]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-f70e7770]::-webkit-scrollbar{width:8px}.history-content[data-v-f70e7770]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-f70e7770]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-f70e7770]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-f70e7770]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-f70e7770]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-f70e7770]:last-child{border-left:2px solid transparent}.timeline-header[data-v-f70e7770]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-f70e7770]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:none;z-index:2;box-sizing:border-box}.date-label[data-v-f70e7770]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-f70e7770]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-f70e7770]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-f70e7770],.no-more-hint[data-v-f70e7770]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-f70e7770]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-f70e7770]{padding:15px 20px}.header-left h2[data-v-f70e7770]{font-size:20px}.history-content[data-v-f70e7770]{padding:15px 20px}.grid-view[data-v-f70e7770]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-f70e7770]{height:120px}.list-meta[data-v-f70e7770]{display:none}.list-info[data-v-f70e7770]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.channel-icon-wrapper[data-v-33933ada]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-33933ada] svg,.channel-svg-icon[data-v-33933ada]{width:1em;height:1em;fill:currentColor}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-3620a174]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(37,99,235,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,hsla(0,0%,100%,.8));box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-3620a174]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-3620a174]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-3620a174]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-3620a174]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-3620a174]:last-child{margin-bottom:0}.upload-list-item-url[data-v-3620a174]{display:flex;flex-direction:column}.file-icon[data-v-3620a174]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-3620a174]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,rgba(37,99,235,.05));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(37,99,235,.12));transition:all .3s ease}.upload-list-item-name-wrapper[data-v-3620a174]:hover{background:var(--file-name-hover-bg,rgba(37,99,235,.09));border-color:var(--file-name-hover-border,rgba(37,99,235,.2))}.upload-list-item-name[data-v-3620a174]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-3620a174]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,rgba(37,99,235,.04));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(37,99,235,.1))}.upload-list-item-progress[data-v-3620a174] .el-progress{--el-color-primary:#2563eb}.upload-list-item-progress[data-v-3620a174] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,rgba(0,0,0,.045));box-shadow:none;overflow:hidden}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner{border-radius:8px;background:#2563eb!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.12);pointer-events:none}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-3620a174 1s linear infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner{background:#16a34a!important;background-size:200% 100%;box-shadow:none;animation:none}.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-3620a174] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-3620a174 1s ease-in-out infinite}.upload-list-item-progress[data-v-3620a174] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-3620a174{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-3620a174{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-3620a174] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-3620a174] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-3620a174] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(37,99,235,.08),transparent);animation:shimmer-3620a174 2s infinite;z-index:0}@keyframes shimmer-3620a174{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-3620a174] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-3620a174] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-3620a174 2s ease-in-out infinite}.upload-list-item-url[data-v-3620a174] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-3620a174{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-3620a174]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-3620a174]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-3620a174]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-3620a174]{background:var(--file-action-primary-bg,#2563eb);color:#fff;box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-primary[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-3620a174]{background:var(--file-action-danger-bg,#dc2626);color:#fff;box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:hover{transform:scale(1.08);box-shadow:none}.modern-file-action-btn-danger[data-v-3620a174]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-3620a174]{margin-left:2px}.upload-list-item-url-row[data-v-3620a174]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-3620a174]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-3620a174] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-3620a174] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-3620a174] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-3620a174] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-3620a174]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-3620a174]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-3620a174]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-5afbc1b3{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-5afbc1b3],.upload-list-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-5afbc1b3]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-5afbc1b3]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-5afbc1b3],.upload-list-container[data-v-5afbc1b3]{width:70vw}}.upload-list-card.upload-list-busy[data-v-5afbc1b3],.upload-list-container.upload-list-busy[data-v-5afbc1b3]{height:40vh}.upload-list-card.is-uploading[data-v-5afbc1b3]{border:1px solid var(--el-upload-dragger-uniform-color,#2563eb)!important;box-shadow:none!important}.upload-card-wrapper[data-v-5afbc1b3]{position:relative;overflow:visible}.upload-card-glow[data-v-5afbc1b3]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-5afbc1b3]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-5afbc1b3]{width:70vw}}.upload-card-busy[data-v-5afbc1b3] .el-upload-dragger{height:17vh}[data-v-5afbc1b3] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:1px solid var(--glass-border);opacity:.7;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow)}[data-v-5afbc1b3] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-5afbc1b3] .el-upload-dragger.is-dragover,[data-v-5afbc1b3] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-5afbc1b3] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-5afbc1b3]{position:relative;background:none}.upload-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-5afbc1b3]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-5afbc1b3]{font-size:small}}.el-upload__text.upload-list-busy[data-v-5afbc1b3]{font-size:small}.el-icon--upload[data-v-5afbc1b3]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-5afbc1b3]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-5afbc1b3]{font-size:30px}}.paste-card[data-v-5afbc1b3]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-5afbc1b3]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-5afbc1b3]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#2563eb) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#2563eb) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#2563eb) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-5afbc1b3 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-5afbc1b3] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:17vh}.upload-card-textarea[data-v-5afbc1b3]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,rgba(37,99,235,.02));transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-5afbc1b3]{height:50%}.upload-card-textarea[data-v-5afbc1b3]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:rgba(37,99,235,.2);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-5afbc1b3]:hover:before{opacity:1}.upload-card-textarea[data-v-5afbc1b3]:focus-within:before{opacity:1;background:rgba(37,99,235,.4)}[data-v-5afbc1b3] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-5afbc1b3] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-5afbc1b3] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(37,99,235,.03))}[data-v-5afbc1b3] .el-textarea__inner:focus{border-color:transparent;box-shadow:none;background:var(--textarea-inner-focus-bg,rgba(37,99,235,.02))}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb{background:rgba(37,99,235,.5);border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-5afbc1b3] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-5afbc1b3]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 10%,var(--toolbar-button-bg-color))!important;border:1px solid color-mix(in srgb,var(--el-upload-dragger-uniform-color) 30%,var(--glass-border))!important;box-shadow:none;transition:background-color .2s ease,border-color .2s ease,transform .2s ease!important}.paste-card-upload-button[data-v-5afbc1b3]:hover{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-5afbc1b3]:focus-visible{color:var(--el-upload-dragger-uniform-color)!important;background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 15%,var(--toolbar-button-bg-color))!important;border-color:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 48%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 14%,transparent)!important}.paste-card-upload-button[data-v-5afbc1b3]:active{transform:translateY(0);background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 18%,var(--toolbar-button-bg-color))!important}.upload-card-busy .paste-card-upload-button[data-v-5afbc1b3]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-5afbc1b3]{margin-top:10px}.paste-card-method-group[data-v-5afbc1b3]{display:inline-flex;align-items:center;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--modern-action-group-bg);border:1px solid var(--modern-action-group-border);border-radius:10px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:30px;box-sizing:border-box;padding:0 14px;border-radius:7px!important;border:none!important;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--toolbar-button-color);box-shadow:none!important;transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-5afbc1b3] .el-radio-button:last-child .el-radio-button__inner{border-radius:7px!important}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner:hover{background:var(--modern-action-group-hover-bg);color:var(--el-text-color-primary)}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:color-mix(in srgb,var(--el-upload-dragger-uniform-color) 16%,var(--toolbar-button-bg-color))!important;color:var(--el-upload-dragger-uniform-color)!important;font-weight:600;box-shadow:0 0 0 1px color-mix(in srgb,var(--el-upload-dragger-uniform-color) 52%,var(--glass-border)) inset!important}@media (max-width:768px){.paste-card[data-v-5afbc1b3]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-5afbc1b3]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-5afbc1b3]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-5afbc1b3]:before{border-radius:11px}[data-v-5afbc1b3] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-5afbc1b3]{width:100%!important;margin-top:8px;gap:8px}.paste-card-upload-button[data-v-5afbc1b3]{height:32px;min-width:64px;border-radius:8px!important;font-size:12px;letter-spacing:.02em;padding:0 12px}.paste-card-method-group[data-v-5afbc1b3]{height:32px;padding:3px;border-radius:9px}.paste-card-method-group[data-v-5afbc1b3] .el-radio-button__inner{min-width:52px;height:26px;padding:0 10px;font-size:11px;border-radius:6px!important}}.upload-list-dashboard[data-v-5afbc1b3]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;box-sizing:border-box;width:100%;min-width:0;position:sticky;top:0;z-index:1;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow);opacity:.7}[data-v-5afbc1b3] .el-upload-dragger{position:relative;overflow:hidden}[data-v-5afbc1b3] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-5afbc1b3] .el-upload-dragger:after,[data-v-5afbc1b3] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-5afbc1b3] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-5afbc1b3 60s linear infinite}.upload-card[data-v-5afbc1b3]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-5afbc1b3 40s linear infinite,starPulse-5afbc1b3 4s ease-in-out infinite}@keyframes starScroll-5afbc1b3{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-5afbc1b3{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-5afbc1b3]{display:flex;align-items:center;gap:5px;height:44px;box-sizing:border-box;padding:5px;background:var(--glass-bg);border-radius:12px;border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-group[data-v-5afbc1b3]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:13px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);cursor:pointer;transition:background-color .22s ease,color .22s ease,box-shadow .22s ease,transform .22s ease;font-size:14px;box-shadow:var(--upload-action-btn-shadow);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-5afbc1b3]:focus,.modern-action-btn[data-v-5afbc1b3]:focus-visible{outline:none!important}.modern-action-btn[data-v-5afbc1b3]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-5afbc1b3]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-5afbc1b3]:hover:before{opacity:.08}.modern-action-btn[data-v-5afbc1b3]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-5afbc1b3]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-5afbc1b3]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-5afbc1b3]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-5afbc1b3]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-5afbc1b3]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-5afbc1b3]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;height:44px;box-sizing:border-box;padding:0 14px;background:var(--dashboard-title-bg,rgba(37,99,235,.06));border:1px solid var(--glass-border);border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-5afbc1b3]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-5afbc1b3]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-5afbc1b3]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-5afbc1b3]{font-size:12px;padding:4px 10px}.upload-list-dashboard[data-v-5afbc1b3]{padding:0 8px;gap:4px}.upload-list-dashboard-title[data-v-5afbc1b3]{gap:4px;padding:3px 8px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-5afbc1b3]{flex-shrink:0}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.directory-suggestion-input[data-v-28b8eda7]{width:100%;height:100%;position:relative}.suggestion-dropdown[data-v-28b8eda7]{position:absolute;top:calc(100% + 10px);left:0;width:100%;z-index:9999;border-radius:12px;border:1px solid var(--glass-border);background-color:var(--popper-bg-color);box-shadow:var(--popper-shadow);padding:6px 0;overflow:hidden}.suggestion-list[data-v-28b8eda7]{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.suggestion-item[data-v-28b8eda7]{padding:8px 16px;font-size:13px;border-radius:6px;margin:2px 6px;cursor:pointer;transition:background-color .2s ease;text-align:left;color:var(--el-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggestion-item[data-v-28b8eda7]:hover{background-color:var(--el-fill-color-light)}#themeToggle[data-v-66e6a1f0]{border:1px solid #d9dce2;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}html.dark #themeToggle[data-v-66e6a1f0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}#themeToggle[data-v-66e6a1f0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark #themeToggle[data-v-66e6a1f0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){#themeToggle[data-v-66e6a1f0]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-66e6a1f0]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-66e6a1f0]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-66e6a1f0]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-66e6a1f0]{transform:rotate(40deg)}.theme_toggle_g[data-v-66e6a1f0]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-66e6a1f0],.icon-fade-leave-active[data-v-66e6a1f0]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-66e6a1f0]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-66e6a1f0],.icon-fade-leave-from[data-v-66e6a1f0]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-66e6a1f0]{display:inline-block}.container[data-v-579106c0]{background:var(--bg-color);min-height:100vh}.rotate[data-v-579106c0]{animation:spin-579106c0 2s ease-in-out}.scale[data-v-579106c0]{animation:scale-579106c0 .5s ease-in-out}@keyframes spin-579106c0{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-579106c0{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-579106c0{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-579106c0{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-579106c0{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-579106c0]{display:inline-block}.mobile-only[data-v-579106c0]{display:none}@media (max-width:768px){.desktop-only[data-v-579106c0]{display:none!important}.mobile-only[data-v-579106c0]{display:flex!important}}.toggle-dark-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}html.dark .toggle-dark-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .more-dropdown .more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.more-dropdown .more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .more-dropdown .more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-method-button[data-v-579106c0]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}html.dark .upload-method-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}@media (max-width:768px){.upload-method-button[data-v-579106c0]{width:2rem;height:2rem}}.upload-method-icon[data-v-579106c0]{outline:none}.more-button .svg-inline--fa[data-v-579106c0],.upload-method-button .svg-inline--fa[data-v-579106c0]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-579106c0]{font-size:1.3em}.mobile-more-dropdown[data-v-579106c0]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-579106c0]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid #d9dce2;transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:hsla(0,0%,100%,.72);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}html.dark .mobile-more-button[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-more-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .mobile-more-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder-container[data-v-579106c0]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-579106c0]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-579106c0],.upload-folder-container[data-v-579106c0]{right:58px}}.upload-folder[data-v-579106c0]{width:100px;height:2.5rem;border-radius:12px;display:flex;align-items:center;box-sizing:border-box;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-579106c0]{width:200px}@media (max-width:768px){.upload-folder[data-v-579106c0]{width:80px;height:2rem}.upload-folder.active[data-v-579106c0]{width:120px}}.directory-tree-trigger[data-v-579106c0]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;box-sizing:border-box;border:1px solid var(--glass-border);margin-left:10px;background-color:var(--glass-bg);box-shadow:var(--glass-shadow);color:var(--theme-toggle-color);border-radius:12px;outline:none;cursor:pointer;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}.directory-tree-trigger[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc;transform:scale(1.05)}html.dark .directory-tree-trigger[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.directory-tree-trigger[data-v-579106c0]{width:2rem;height:2rem}}.upload-folder[data-v-579106c0] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-579106c0] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-579106c0] .el-input__wrapper{border-radius:12px;background-color:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:var(--glass-shadow);border:1px solid var(--glass-border);height:100%;padding:0 10px;box-sizing:border-box;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease!important}.upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0] .el-input__wrapper:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2.5rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 6px);position:fixed;bottom:50px;right:30px;width:var(--quick-toolbar-size);box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:0;z-index:200;padding:3px;border-radius:999px;border:1px solid #d9dce2;background-color:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}html.dark .quick-toolbar[data-v-579106c0]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.quick-toolbar-button[data-v-579106c0]{width:var(--quick-toolbar-button-size);height:var(--quick-toolbar-button-size);border:none;transition:transform .22s ease,background-color .22s ease,box-shadow .22s ease,color .22s ease;margin-left:0;padding:0;border-radius:999px;background-color:transparent;box-shadow:none;color:var(--toolbar-button-color);outline:none}.quick-toolbar-actions[data-v-579106c0]{display:grid;grid-template-rows:0fr;width:100%;margin-bottom:0;opacity:0;pointer-events:none;transform:translateY(12px);transform-origin:bottom center;transition:grid-template-rows .52s cubic-bezier(.16,1,.3,1),margin-bottom .52s cubic-bezier(.16,1,.3,1),opacity .32s ease,transform .52s cubic-bezier(.16,1,.3,1)}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-579106c0]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-579106c0]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-579106c0]{margin-top:4px}.quick-toolbar-icon[data-v-579106c0]{font-size:16px}.quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-579106c0]{transform:rotate(0deg)}.info-container[data-v-579106c0]:hover,.quick-toolbar-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.quick-toolbar[data-v-579106c0]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .quick-toolbar[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.quick-toolbar-button[data-v-579106c0]:hover{transform:none}.toggle-dark-button[data-v-579106c0]:hover,.upload-method-button[data-v-579106c0]:hover{transform:scale(1.05);background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .toggle-dark-button[data-v-579106c0]:hover,html.dark .upload-method-button[data-v-579106c0]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .upload-folder[data-v-579106c0]:hover .el-input__wrapper{background-color:rgba(22,22,24,.88);border-color:#4a4a52}@media (max-width:768px){.quick-toolbar[data-v-579106c0]{--quick-toolbar-size:2rem;--quick-toolbar-button-size:calc(var(--quick-toolbar-size) - 4px);right:18px;bottom:max(72px,calc(6vh + 20px + env(safe-area-inset-bottom)));padding:2px}.quick-toolbar-actions[data-v-579106c0]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-579106c0]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-579106c0]{gap:2px}.quick-toolbar-more[data-v-579106c0]{margin-top:3px}.quick-toolbar-icon[data-v-579106c0]{font-size:14px}}[data-v-579106c0] .el-dialog{border-radius:12px;border:1px solid var(--glass-border);background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-579106c0]{display:flex;justify-content:center;margin-top:20px}.header[data-v-579106c0]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-579106c0]{font-size:2.25rem;font-weight:400;font-family:Pacifico,Noto Sans SC,sans-serif;color:var(--upload-title-text-color);text-shadow:var(--upload-title-text-shadow);position:relative;padding-bottom:8px;cursor:pointer;transition:transform .4s cubic-bezier(.4,0,.2,1),filter .25s ease;animation:float-579106c0 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-579106c0]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-579106c0]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:var(--upload-title-underline-bg);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:var(--upload-title-underline-shadow)}.title[data-v-579106c0]:hover:after{width:80%}.main-title[data-v-579106c0]{color:var(--upload-main-title-color);text-decoration:none;display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3));transition:opacity .16s ease}.title:hover .main-title[data-v-579106c0]{opacity:0}.title[data-v-579106c0]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-579106c0]{position:absolute;left:50%;top:-1px;z-index:2;width:-moz-max-content;width:max-content;pointer-events:none;white-space:nowrap;color:var(--upload-title-crayon-deep,#1d2129);opacity:0;-webkit-text-stroke:.35px var(--upload-title-crayon-edge);text-shadow:-1.2px .4px 0 var(--upload-title-crayon-burr),.9px -.7px 0 hsla(0,0%,100%,.24),1.5px .5px 0 var(--upload-title-crayon-dust),-1.7px -.6px 0 var(--upload-title-crayon-dust);transform:translateX(-50%) rotate(-.8deg);transform-origin:left 68%;clip-path:inset(-10px 100% -10px -10px);filter:saturate(1.08) contrast(1.06)}.title:hover .title-crayon-text[data-v-579106c0]{animation:crayonWrite-579106c0 .82s steps(18) forwards,crayonScratch-579106c0 .16s steps(2) .82s 3}@keyframes float-579106c0{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-579106c0{0%{opacity:0;clip-path:inset(-10px 100% -10px -10px)}12%{opacity:.92}32%{clip-path:inset(-10px 68% -10px -10px)}47%{clip-path:inset(-10px 52% -10px -10px)}63%{clip-path:inset(-10px 34% -10px -10px)}78%{clip-path:inset(-10px 18% -10px -10px)}to{opacity:.92;clip-path:inset(-10px -10px -10px -10px)}}@keyframes crayonScratch-579106c0{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-579106c0]{font-size:1.55rem;letter-spacing:1px}.title[data-v-579106c0]:hover{transform:scale(1.05)}}.upload-home[data-v-579106c0]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-579106c0]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-579106c0]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-579106c0]{padding-bottom:5px}.upload[data-v-579106c0]{top:-3.8vh}}.footer[data-v-579106c0]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/148.ff5f4652.css.gz b/frontend-dist/css/148.ff5f4652.css.gz new file mode 100644 index 00000000..ea18f5f3 Binary files /dev/null and b/frontend-dist/css/148.ff5f4652.css.gz differ diff --git a/frontend-dist/css/870.16cbea0a.css.gz b/frontend-dist/css/870.16cbea0a.css.gz deleted file mode 100644 index 858d157d..00000000 Binary files a/frontend-dist/css/870.16cbea0a.css.gz and /dev/null differ diff --git a/frontend-dist/css/888.793f4b66.css b/frontend-dist/css/888.af58b0bb.css similarity index 100% rename from frontend-dist/css/888.793f4b66.css rename to frontend-dist/css/888.af58b0bb.css diff --git a/frontend-dist/css/888.793f4b66.css.gz b/frontend-dist/css/888.af58b0bb.css.gz similarity index 100% rename from frontend-dist/css/888.793f4b66.css.gz rename to frontend-dist/css/888.af58b0bb.css.gz diff --git a/frontend-dist/css/957.db5680df.css b/frontend-dist/css/903.7a90c42f.css similarity index 66% rename from frontend-dist/css/957.db5680df.css rename to frontend-dist/css/903.7a90c42f.css index d3980723..7c25673b 100644 --- a/frontend-dist/css/957.db5680df.css +++ b/frontend-dist/css/903.7a90c42f.css @@ -1 +1 @@ -.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{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-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{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-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{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-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{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-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{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-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{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-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{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-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{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-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{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-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{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-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{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-12b39bad]{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-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{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-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{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-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{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-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-e3ec6a12]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e3ec6a12] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e3ec6a12] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e3ec6a12]:hover{transform:scale(1.05)}.folder-card[data-v-e3ec6a12]{cursor:pointer}.folder-icon[data-v-e3ec6a12]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-e3ec6a12]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-e3ec6a12]{transform:scale(1.03)}.card-bottom-overlay[data-v-e3ec6a12]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-e3ec6a12]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e3ec6a12]{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-e3ec6a12]{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-e3ec6a12]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e3ec6a12],.action-bar-right[data-v-e3ec6a12]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e3ec6a12]{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-e3ec6a12]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e3ec6a12]:active{transform:scale(.95)}.action-btn-danger[data-v-e3ec6a12]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-e3ec6a12]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-e3ec6a12] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-e3ec6a12]:hover{transform:none}.folder-icon-svg[data-v-e3ec6a12]{font-size:36px}.card-bottom-overlay[data-v-e3ec6a12]{padding:22px 6px 6px}.file-name[data-v-e3ec6a12]{font-size:11px}.action-bar[data-v-e3ec6a12]{display:none!important}}@keyframes skeleton-shimmer-ef863880{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-ef863880{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-ef863880]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-ef863880]{width:100%;height:100%;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-info[data-v-ef863880]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-ef863880]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-list-item[data-v-ef863880]{animation:skeleton-pulse-ef863880 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-ef863880]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-ef863880]{width:40px;height:40px;border-radius:6px}.skeleton-preview[data-v-ef863880],.skeleton-text-long[data-v-ef863880]{background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-long[data-v-ef863880]{height:14px;width:80%;border-radius:4px}.skeleton-text-short[data-v-ef863880]{width:60px}.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:14px;border-radius:4px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-text-tiny[data-v-ef863880]{width:40px}.skeleton-tag[data-v-ef863880]{height:20px;width:50px;border-radius:10px;background:var(--skeleton-bg-color);background-size:200% 100%;animation:skeleton-shimmer-ef863880 1.5s ease-in-out infinite}.skeleton-actions[data-v-ef863880]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-ef863880]{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-ef863880]{display:flex;align-items:center}.list-col-checkbox[data-v-ef863880],.list-col-preview[data-v-ef863880]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-ef863880]{height:148px;border-radius:7px}.skeleton-info[data-v-ef863880]{padding:22px 6px 6px}.skeleton-text[data-v-ef863880]{height:11px;width:68%;border-radius:3px}.list-item[data-v-ef863880]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-ef863880]{width:16px;height:16px}.skeleton-preview[data-v-ef863880]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-ef863880],.skeleton-text-short[data-v-ef863880],.skeleton-text-tiny[data-v-ef863880]{height:10px;border-radius:3px}.skeleton-actions[data-v-ef863880]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-ef863880],.list-col-channel-name[data-v-ef863880],.list-col-channel[data-v-ef863880],.list-col-date[data-v-ef863880],.list-col-size[data-v-ef863880],.list-col-tags[data-v-ef863880]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{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-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;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-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .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-57eabdee] .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-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{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-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{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-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;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-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file +.move-dialog-content[data-v-7aaa437c]{padding:0 10px}.move-path-input-container[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.move-path-input[data-v-7aaa437c]{flex:1}.directory-picker-trigger[data-v-7aaa437c]{flex-shrink:0}.move-dialog-hint[data-v-7aaa437c]{margin-top:12px;font-size:12px;color:var(--el-text-color-secondary)}.move-drawer-content[data-v-7aaa437c]{padding:16px}.move-path-section[data-v-7aaa437c]{margin-bottom:16px}.move-path-label[data-v-7aaa437c]{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--el-text-color-primary)}.move-path-input-row[data-v-7aaa437c]{display:flex;align-items:center;gap:10px}.embedded-tree-section[data-v-7aaa437c]{margin-top:16px;border:1px solid var(--el-border-color-lighter);border-radius:8px;overflow:hidden}.tree-section-header[data-v-7aaa437c]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-lighter)}.tree-section-title[data-v-7aaa437c]{font-size:14px;font-weight:500}.tree-container[data-v-7aaa437c]{min-height:200px;max-height:300px;overflow-y:auto;padding:8px}.directory-tree[data-v-7aaa437c]{background:transparent}.directory-tree[data-v-7aaa437c] .el-tree-node__content{height:44px;padding:0 8px;border-radius:8px}.tree-node[data-v-7aaa437c]{display:flex;align-items:center;gap:8px;padding:4px 0;width:100%}.tree-node.is-current[data-v-7aaa437c]{color:var(--el-color-primary);font-weight:500}.folder-icon[data-v-7aaa437c]{color:var(--el-color-warning);font-size:16px}.node-label[data-v-7aaa437c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-state[data-v-7aaa437c]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;text-align:center}.error-icon[data-v-7aaa437c]{font-size:32px;color:var(--el-color-danger)}.error-text[data-v-7aaa437c]{color:var(--el-text-color-secondary);font-size:14px}.drawer-footer[data-v-7aaa437c]{display:flex;gap:12px;padding:0 16px 16px}.footer-btn[data-v-7aaa437c]{flex:1}.move-dialog .el-dialog__body{padding:20px}.move-drawer{border-radius:16px 16px 0 0!important}.move-drawer .el-drawer__header{margin-bottom:0;padding:16px 20px;border-bottom:1px solid var(--el-border-color-lighter)}.move-drawer .el-drawer__body,.move-drawer .el-drawer__footer{padding:0}.mobile-drawer-overlay[data-v-3b79a1b6]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000}.mobile-drawer[data-v-3b79a1b6]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border:1px solid var(--glass-border);border-radius:16px;box-shadow:none;display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-3b79a1b6]{background:rgba(40,40,45,.98);box-shadow:none}.mobile-drawer-header[data-v-3b79a1b6]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:rgba(56,189,248,.1);border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-3b79a1b6]{font-size:15px;font-weight:600;color:#38bdf8;display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-3b79a1b6]:before{content:"";display:inline-block;width:4px;height:16px;background:#38bdf8;border-radius:2px}.mobile-drawer-close[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-3b79a1b6]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-3b79a1b6]{background:rgba(56,189,248,.15);color:#38bdf8;font-weight:600}.mobile-drawer-item-icon[data-v-3b79a1b6]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-3b79a1b6]{opacity:1;color:#38bdf8}.mobile-drawer-back[data-v-3b79a1b6]{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-3b79a1b6]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-3b79a1b6]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-3b79a1b6]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-3b79a1b6]{animation:slideInLeft-3b79a1b6 .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-3b79a1b6]{animation:slideOutLeft-3b79a1b6 .2s ease-in}.drawer-slide-enter-from[data-v-3b79a1b6],.drawer-slide-leave-to[data-v-3b79a1b6]{opacity:0}@keyframes slideInLeft-3b79a1b6{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-3b79a1b6{0%{transform:translateX(0)}to{transform:translateX(-100%)}}.bottom-sheet-overlay[data-v-efef5a4c]{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-efef5a4c]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:none;border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-efef5a4c]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:none}.bottom-sheet-header[data-v-efef5a4c]{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-efef5a4c]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-efef5a4c]{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-efef5a4c]{color:#f0f0f0}.bottom-sheet-content[data-v-efef5a4c]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-efef5a4c]{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-efef5a4c]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-efef5a4c]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-efef5a4c]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-efef5a4c]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-efef5a4c],.bottom-sheet-danger[data-v-efef5a4c]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-efef5a4c]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-efef5a4c]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-efef5a4c]{animation:slideUp-efef5a4c .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-efef5a4c]{animation:slideDown-efef5a4c .2s ease-in}.bottom-sheet-enter-from[data-v-efef5a4c],.bottom-sheet-leave-to[data-v-efef5a4c]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-efef5a4c],.bottom-sheet-leave-to .bottom-sheet[data-v-efef5a4c]{transform:translateY(100%)}@keyframes slideUp-efef5a4c{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-efef5a4c{0%{transform:translateY(0)}to{transform:translateY(100%)}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-0d04afa1]{padding:0}.tab-content[data-v-0d04afa1]{padding:20px}.tab-description[data-v-0d04afa1]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-0d04afa1]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-0d04afa1]{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-0d04afa1]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-0d04afa1]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-0d04afa1],.tags-to-add-section[data-v-0d04afa1]{margin-bottom:20px}.common-tags-section h4[data-v-0d04afa1],.tags-to-add-section h4[data-v-0d04afa1]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-0d04afa1]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-0d04afa1]{cursor:default}.empty-message[data-v-0d04afa1]{color:#59636e;font-size:13px;padding:10px 0}.action-buttons[data-v-0d04afa1]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-24c809e4]{padding:10px 0}.input-section[data-v-24c809e4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-24c809e4]{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-24c809e4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-24c809e4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-24c809e4],.popular-tags-section[data-v-24c809e4]{margin-bottom:20px}.current-tags-section h4[data-v-24c809e4],.popular-tags-section h4[data-v-24c809e4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-24c809e4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-24c809e4]{cursor:default}.tag-item.clickable[data-v-24c809e4]{cursor:pointer;transition:transform .2s}.empty-message[data-v-24c809e4]{color:#59636e;font-size:13px;padding:10px 0}.dialog-footer[data-v-24c809e4]{display:flex;justify-content:flex-end}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.detail-actions[data-v-38a97614]{display:flex;justify-content:right;margin-bottom:10px;flex-wrap:wrap;gap:8px}.detail-action[data-v-38a97614]{margin-left:0!important}.video-preview[data-v-38a97614]{max-height:300px;cursor:pointer;-o-object-fit:contain;object-fit:contain}.audio-preview[data-v-38a97614],.video-preview[data-v-38a97614]{width:100%;max-width:400px;border-radius:8px}.image-preview[data-v-38a97614]{width:auto;height:auto;max-width:100%;max-height:300px;border-radius:8px;cursor:pointer}.image-preview[data-v-38a97614] img{max-width:100%;max-height:300px;-o-object-fit:contain;object-fit:contain}.file-icon-detail[data-v-38a97614]{font-size:64px;color:var(--el-text-color-secondary)}.preview-section[data-v-38a97614]{display:flex;justify-content:center;margin-bottom:15px;padding:12px;background:var(--el-fill-color-light);border:1px solid var(--glass-border);border-radius:8px;min-height:60px}.preview-content[data-v-38a97614]{display:flex;justify-content:center;align-items:center;width:100%}[data-v-38a97614] .el-descriptions__content{word-break:break-all;word-wrap:break-word}[data-v-38a97614] .el-descriptions__content .el-tag,[data-v-38a97614] .el-descriptions__content .el-tag+span{vertical-align:middle}[data-v-38a97614] .el-descriptions__label{width:120px!important;min-width:100px!important;max-width:120px!important}[data-v-38a97614] .el-descriptions__body table{table-layout:fixed}@media (max-width:768px){.detail-actions[data-v-38a97614]{justify-content:center}}.batch-floating-bar[data-v-6de9da06]{position:fixed;left:50%;bottom:max(84px,calc(72px + env(safe-area-inset-bottom)));transform:translateX(-50%);z-index:1200;display:flex;align-items:center;gap:6px;max-width:min(720px,calc(100vw - 48px));padding:6px;border:1px solid var(--admin-batch-toolbar-border);border-radius:999px;background:var(--admin-batch-toolbar-bg);box-shadow:var(--admin-batch-toolbar-shadow)}.batch-selection-summary[data-v-6de9da06]{display:flex;align-items:center;flex:0 0 auto;padding:0 2px}.batch-selection-count[data-v-6de9da06]{min-width:18px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;color:var(--admin-batch-clear-color);font-size:14px;font-weight:600;line-height:1}.batch-toolbar-divider[data-v-6de9da06]{width:1px;height:16px;flex:0 0 auto;border-radius:999px;background:var(--admin-batch-toolbar-border);opacity:.58}.batch-floating-actions[data-v-6de9da06]{display:flex;align-items:center;gap:4px}.batch-floating-btn[data-v-6de9da06]{width:36px;height:36px;min-width:36px;margin-left:0!important;padding:0;border:none;border-radius:50%;color:var(--admin-batch-clear-color);background:var(--admin-batch-action-bg);box-shadow:var(--admin-batch-action-shadow);transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,color .22s ease}.batch-floating-btn[data-v-6de9da06]:hover{transform:none;background:var(--admin-batch-action-hover-bg);box-shadow:var(--admin-batch-action-hover-shadow)}.batch-floating-btn.danger[data-v-6de9da06]{color:var(--admin-batch-delete-color)}.batch-floating-btn.ban[data-v-6de9da06],.batch-floating-btn.tag[data-v-6de9da06],.batch-floating-btn.white[data-v-6de9da06]{color:var(--admin-batch-tag-color)}.batch-floating-btn.ghost[data-v-6de9da06]{color:var(--admin-batch-clear-color)}.batch-floating-icon[data-v-6de9da06]{width:15px;margin-right:0}.batch-toolbar-enter-active[data-v-6de9da06],.batch-toolbar-leave-active[data-v-6de9da06]{transition:opacity .24s ease,transform .28s cubic-bezier(.22,1,.36,1)}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{opacity:0;transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}@media (max-width:768px){.batch-floating-bar[data-v-6de9da06]{left:50%;right:auto;bottom:max(76px,calc(64px + env(safe-area-inset-bottom)));transform:translateX(-50%);width:-moz-max-content;width:max-content;max-width:calc(100vw - 24px);gap:4px;padding:5px;border-radius:999px}.batch-selection-summary[data-v-6de9da06]{padding:0 1px}.batch-selection-count[data-v-6de9da06]{min-width:16px;height:22px;padding:0 3px;font-size:12px}.batch-toolbar-divider[data-v-6de9da06]{height:14px}.batch-floating-actions[data-v-6de9da06]{flex:1;min-width:0;gap:3px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:1px}.batch-floating-actions[data-v-6de9da06]::-webkit-scrollbar{display:none}.batch-floating-btn[data-v-6de9da06]{width:32px;height:32px;min-width:32px;padding:0;border-radius:50%}.batch-floating-icon[data-v-6de9da06]{margin-right:0;width:13px}.batch-toolbar-enter-from[data-v-6de9da06],.batch-toolbar-leave-to[data-v-6de9da06]{transform:translateX(-50%) translateY(12px) scale(.99)}.batch-toolbar-enter-to[data-v-6de9da06],.batch-toolbar-leave-from[data-v-6de9da06]{transform:translateX(-50%) translateY(0) scale(1)}}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.dashboard-checkbox[data-v-f8222714]{box-sizing:border-box;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease}.dashboard-checkbox--list[data-v-f8222714]{width:18px;height:18px;border:2px solid #d9dce2;border-radius:5px;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--list[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--list[data-v-f8222714]:hover{border-color:#38bdf8;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--list[data-v-f8222714]:hover{background:rgba(22,22,24,.88)}.dashboard-checkbox--list[data-v-f8222714]:focus-visible{outline:none;border-color:#38bdf8;box-shadow:0 0 0 3px rgba(56,189,248,.14)}.dashboard-checkbox--list.checked[data-v-f8222714],.dashboard-checkbox--list.indeterminate[data-v-f8222714]{border-color:#38bdf8;background:#0ea5e9}.dashboard-checkbox--breadcrumb[data-v-f8222714]{position:relative;width:32px;height:32px;overflow:hidden;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]{border:1px solid #34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{content:"";position:absolute;inset:7px;box-sizing:border-box;border:1px solid #d9dce2;border-radius:5px;background:transparent;transition:border-color .18s ease,background .18s ease}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:before{border-color:#34343a}.dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .dashboard-checkbox--breadcrumb[data-v-f8222714]:hover{border-color:#4a4a52;background:rgba(22,22,24,.88)}.dashboard-checkbox--breadcrumb[data-v-f8222714]:focus-visible{outline:none;border-color:rgba(56,189,248,.34)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714],.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#d9dce2;background:hsla(0,0%,100%,.72)}html.dark .dashboard-checkbox--breadcrumb.checked[data-v-f8222714],html.dark .dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]{border-color:#34343a;background:rgba(22,22,24,.75)}.dashboard-checkbox--breadcrumb.checked[data-v-f8222714]:before,.dashboard-checkbox--breadcrumb.indeterminate[data-v-f8222714]:before{border-color:hsla(0,0%,100%,.4);background:#0ea5e9}.dashboard-checkbox-mark[data-v-f8222714]{position:relative;z-index:1;width:10px;height:10px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:11px;height:11px}@media (max-width:768px){.dashboard-checkbox--list[data-v-f8222714]{width:16px;height:16px;border-width:1.5px}.dashboard-checkbox--list .dashboard-checkbox-mark[data-v-f8222714]{width:9px;height:9px}.dashboard-checkbox--breadcrumb[data-v-f8222714]{width:28px;height:28px;border-radius:8px}.dashboard-checkbox--breadcrumb[data-v-f8222714]:before{inset:6px;border-radius:5px}.dashboard-checkbox--breadcrumb .dashboard-checkbox-mark[data-v-f8222714]{width:10px;height:10px}}.list-item[data-v-4b029ac8]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:65px;padding:12px 20px;align-items:center;transition:background .2s ease;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-4b029ac8]:last-child{border-bottom:none}.list-item[data-v-4b029ac8]:hover{background:var(--el-fill-color-light)}.list-col[data-v-4b029ac8]{display:flex;align-items:center}.list-col-checkbox[data-v-4b029ac8]{justify-content:center;min-width:40px}.list-col-preview[data-v-4b029ac8]{justify-content:center;cursor:pointer}.list-col-name[data-v-4b029ac8]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.list-col-name[data-v-4b029ac8]:hover{color:#38bdf8}.filename-ellipsis[data-v-4b029ac8]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-4b029ac8]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-4b029ac8]{flex-shrink:0;white-space:nowrap}.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-4b029ac8]{font-size:13px}.address-box[data-v-4b029ac8],.channel-name-box[data-v-4b029ac8]{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-4b029ac8]{width:85px;font-family:Consolas,Monaco,monospace}.channel-name-box[data-v-4b029ac8]{width:70px}.address-box[data-v-4b029ac8]::-webkit-scrollbar,.channel-name-box[data-v-4b029ac8]::-webkit-scrollbar{display:none}.list-col-tags[data-v-4b029ac8]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.color-tag[data-v-4b029ac8]{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-4b029ac8]{min-width:30px;text-align:center}.list-empty[data-v-4b029ac8]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-4b029ac8]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-4b029ac8]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-4b029ac8]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-4b029ac8]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-4b029ac8]{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-4b029ac8]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-4b029ac8]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-item[data-v-4b029ac8]{grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;font-size:12px}.list-col-address[data-v-4b029ac8],.list-col-channel-name[data-v-4b029ac8],.list-col-channel[data-v-4b029ac8],.list-col-date[data-v-4b029ac8],.list-col-size[data-v-4b029ac8],.list-col-tags[data-v-4b029ac8]{display:none}.list-col-name[data-v-4b029ac8]{padding-right:8px;line-height:1.25}.list-preview-img[data-v-4b029ac8]{width:34px;height:34px;border-radius:5px}.list-folder-icon[data-v-4b029ac8]{font-size:24px}.list-file-icon[data-v-4b029ac8]{font-size:21px}.list-col-actions[data-v-4b029ac8]{gap:3px}.list-action-btn[data-v-4b029ac8]{width:26px;height:26px;border-radius:7px;font-size:12px}.list-col-checkbox[data-v-4b029ac8]{width:18px;min-width:18px}}.img-card[data-v-12b39bad]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-12b39bad]:before{content:"";position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(180deg,rgba(0,0,0,.35) 0,rgba(0,0,0,.12) 50%,transparent);pointer-events:none;z-index:5}.img-card[data-v-12b39bad] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-12b39bad] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-12b39bad]:hover{transform:scale(1.05)}.image-preview[data-v-12b39bad],.video-preview[data-v-12b39bad]{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-12b39bad]{cursor:pointer}.img-card:hover .file-icon[data-v-12b39bad],.img-card:hover .image-preview[data-v-12b39bad],.img-card:hover .video-preview[data-v-12b39bad]{transform:scale(1.03)}.image-preview[data-v-12b39bad]:hover{opacity:.8}.file-short-info[data-v-12b39bad]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-12b39bad]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.fail-tag[data-v-12b39bad]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-12b39bad]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.file-preview[data-v-12b39bad]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-12b39bad]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-12b39bad]{color:var(--el-color-primary);opacity:.8}.audio-card-preview[data-v-12b39bad]{cursor:pointer}.card-bottom-overlay[data-v-12b39bad]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-12b39bad]{display:flex;align-items:center;justify-content:center}.file-name[data-v-12b39bad]{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-12b39bad]{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-12b39bad]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-12b39bad],.action-bar-right[data-v-12b39bad]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-12b39bad]{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-12b39bad]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-12b39bad]:active{transform:scale(.95)}.action-btn-danger[data-v-12b39bad]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-12b39bad]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-12b39bad] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-12b39bad]:hover{transform:none}.file-short-info[data-v-12b39bad]{gap:3px;max-width:calc(100% - 38px)}.fail-tag[data-v-12b39bad],.primary-tag[data-v-12b39bad],.success-tag[data-v-12b39bad]{max-width:72px;padding:2px 5px;border-radius:5px;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-bottom-overlay[data-v-12b39bad]{padding:22px 6px 6px}.file-name[data-v-12b39bad]{font-size:11px}.file-icon[data-v-12b39bad]{font-size:34px}.action-bar[data-v-12b39bad]{display:none!important}}@keyframes skeleton-shimmer-12b39bad{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-wrapper[data-v-12b39bad]{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-12b39bad 1.5s ease-in-out infinite}.error-wrapper[data-v-12b39bad]{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-12b39bad]{font-size:32px;color:var(--el-color-warning);opacity:.7}.error-text[data-v-12b39bad]{font-size:12px;color:var(--el-text-color-secondary)}.img-card[data-v-e3ec6a12]{width:100%;height:22vh;content-visibility:auto;contain:layout paint style;contain-intrinsic-size:260px;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-e3ec6a12] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-e3ec6a12] .el-checkbox{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.img-card[data-v-e3ec6a12]:hover{transform:scale(1.05)}.folder-card[data-v-e3ec6a12]{cursor:pointer}.folder-icon[data-v-e3ec6a12]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-icon-svg[data-v-e3ec6a12]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.img-card:hover .folder-icon-svg[data-v-e3ec6a12]{transform:scale(1.03)}.card-bottom-overlay[data-v-e3ec6a12]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.25) 50%,transparent);padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-e3ec6a12]{display:flex;align-items:center;justify-content:center}.file-name[data-v-e3ec6a12]{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-e3ec6a12]{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-e3ec6a12]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-e3ec6a12],.action-bar-right[data-v-e3ec6a12]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-e3ec6a12]{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-e3ec6a12]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-e3ec6a12]:active{transform:scale(.95)}.action-btn-danger[data-v-e3ec6a12]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.img-card[data-v-e3ec6a12]{height:148px;border-radius:7px;contain-intrinsic-size:148px}.img-card[data-v-e3ec6a12] .el-checkbox{top:6px;right:6px;transform:scale(1.1)}.img-card[data-v-e3ec6a12]:hover{transform:none}.folder-icon-svg[data-v-e3ec6a12]{font-size:36px}.card-bottom-overlay[data-v-e3ec6a12]{padding:22px 6px 6px}.file-name[data-v-e3ec6a12]{font-size:11px}.action-bar[data-v-e3ec6a12]{display:none!important}}@keyframes skeleton-shimmer-070880ec{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes skeleton-pulse-070880ec{0%,to{opacity:.4}50%{opacity:.8}}.skeleton-card[data-v-070880ec]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative}.skeleton-image[data-v-070880ec]{width:100%;height:100%;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-info[data-v-070880ec]{position:absolute;bottom:0;left:0;right:0;padding:15px;background:rgba(0,0,0,.5)}.skeleton-text[data-v-070880ec]{height:14px;width:60%;margin:0 auto;border-radius:4px;background:linear-gradient(90deg,hsla(0,0%,100%,.1) 25%,hsla(0,0%,100%,.25) 50%,hsla(0,0%,100%,.1) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-list-item[data-v-070880ec]{animation:skeleton-pulse-070880ec 1.5s ease-in-out infinite}.skeleton-checkbox[data-v-070880ec]{width:18px;height:18px;border-radius:4px;background:var(--skeleton-bg-color)}.skeleton-preview[data-v-070880ec]{width:40px;height:40px;border-radius:6px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-long[data-v-070880ec]{width:80%}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec]{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-text-short[data-v-070880ec]{width:60px}.skeleton-text-tiny[data-v-070880ec]{height:14px;width:40px;border-radius:4px}.skeleton-tag[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{background:linear-gradient(90deg,var(--skeleton-bg-color) 25%,color-mix(in srgb,var(--skeleton-bg-color) 70%,var(--skeleton-shimmer-color)) 50%,var(--skeleton-bg-color) 75%);background-size:200% 100%;animation:skeleton-shimmer-070880ec 1.5s ease-in-out infinite}.skeleton-tag[data-v-070880ec]{height:20px;width:50px;border-radius:10px}.skeleton-actions[data-v-070880ec]{height:28px;width:80px;border-radius:6px;background:var(--skeleton-bg-color)}.list-item[data-v-070880ec]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 110px 130px 80px 100px 120px;padding:12px 20px;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.list-col[data-v-070880ec]{display:flex;align-items:center}.list-col-checkbox[data-v-070880ec],.list-col-preview[data-v-070880ec]{justify-content:center}@media (max-width:768px){.skeleton-card[data-v-070880ec]{height:148px;border-radius:7px}.skeleton-info[data-v-070880ec]{padding:22px 6px 6px}.skeleton-text[data-v-070880ec]{height:11px;width:68%;border-radius:3px}.list-item[data-v-070880ec]{box-sizing:border-box;grid-template-columns:20px 34px 1fr auto;padding:8px 6px;gap:6px;height:50px}.skeleton-checkbox[data-v-070880ec]{width:16px;height:16px}.skeleton-preview[data-v-070880ec]{width:34px;height:34px;border-radius:5px}.skeleton-text-long[data-v-070880ec],.skeleton-text-short[data-v-070880ec],.skeleton-text-tiny[data-v-070880ec]{height:10px;border-radius:3px}.skeleton-actions[data-v-070880ec]{width:58px;height:24px;border-radius:6px}.list-col-address[data-v-070880ec],.list-col-channel-name[data-v-070880ec],.list-col-channel[data-v-070880ec],.list-col-date[data-v-070880ec],.list-col-size[data-v-070880ec],.list-col-tags[data-v-070880ec]{display:none}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-checkbox-group{font-size:0;line-height:0}.filter-dropdown[data-v-e6a38b20]{flex-shrink:0}.filter-trigger[data-v-e6a38b20]{cursor:pointer;display:flex;align-items:center}.header-icon[data-v-e6a38b20]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-e6a38b20]:hover{color:var(--admin-purple);transform:scale(1.2)}.filter-badge[data-v-e6a38b20] .el-badge__content{background:#0ea5e9;border:none;font-size:10px;height:16px;line-height:16px;padding:0 5px}.filter-dropdown-menu[data-v-e6a38b20]{padding:8px 0;min-width:180px;max-height:400px;overflow-y:auto}.filter-section[data-v-e6a38b20]{padding:8px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.filter-section[data-v-e6a38b20]:last-of-type{border-bottom:none}.filter-title[data-v-e6a38b20]{font-size:12px;font-weight:600;color:var(--el-text-color-secondary);margin-bottom:6px}.filter-options[data-v-e6a38b20],.filter-options[data-v-e6a38b20] .el-checkbox-group{display:flex;flex-direction:column;gap:2px}.filter-options[data-v-e6a38b20] .el-checkbox{margin-right:0;height:26px;padding:0 6px;border-radius:4px;transition:all .2s ease}.filter-options[data-v-e6a38b20] .el-checkbox:hover{background:var(--el-fill-color-light)}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:13px;color:var(--el-text-color-primary)}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked+.el-checkbox__label{color:#0ea5e9}.channel-group-title[data-v-e6a38b20]{font-size:11px;font-weight:600;color:var(--el-text-color-secondary);text-transform:uppercase;letter-spacing:.5px;padding:4px 6px;margin-top:4px;margin-bottom:2px}.channel-divider[data-v-e6a38b20]{height:1px;background:var(--el-border-color-lighter);margin:6px 0}.filter-options[data-v-e6a38b20] .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0ea5e9;border-color:#0ea5e9}.filter-actions[data-v-e6a38b20]{padding:10px 12px 6px;display:flex;justify-content:center}.filter-actions .el-button[data-v-e6a38b20]{width:100%;background:var(--el-fill-color-light);border:1px solid var(--el-border-color);color:var(--el-text-color-regular);border-radius:6px;transition:all .2s ease}.filter-actions .el-button[data-v-e6a38b20]:hover:not(:disabled){background:#0ea5e9;border-color:#38bdf8;color:#fff}.filter-actions .el-button[data-v-e6a38b20]:disabled{opacity:.5;cursor:not-allowed}@media (max-width:768px){.filter-dropdown-menu[data-v-e6a38b20]{min-width:160px;max-height:320px}.filter-section[data-v-e6a38b20]{padding:6px 10px}.filter-title[data-v-e6a38b20]{font-size:11px;margin-bottom:4px}.filter-options[data-v-e6a38b20] .el-checkbox{height:24px;padding:0 4px}.filter-options[data-v-e6a38b20] .el-checkbox__label{font-size:12px}.header-icon[data-v-e6a38b20]{font-size:1.2em}}.language-switcher[data-v-08567d0a]{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}.lang-icon[data-v-08567d0a]{font-size:var(--lang-icon-size,1.5em);color:var(--lang-icon-color,var(--theme-toggle-color))}#themeToggle[data-v-5c149ed5]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-5c149ed5]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-5c149ed5]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-5c149ed5]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-5c149ed5]{transform:rotate(40deg)}.theme_toggle_g[data-v-5c149ed5]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-5c149ed5],.icon-fade-leave-active[data-v-5c149ed5]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-5c149ed5]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-5c149ed5],.icon-fade-leave-from[data-v-5c149ed5]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-5c149ed5]{display:inline-block}.tabs[data-v-07e603fa]{display:flex;align-items:center;justify-content:center;gap:8px}.page-switcher[data-v-07e603fa]{position:relative;display:grid;align-items:start;height:44px;overflow:visible}.page-switcher.is-open[data-v-07e603fa]{z-index:1200}.page-switcher-sheet[data-v-07e603fa]{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:4px;border:1px solid transparent;border-radius:14px;box-sizing:border-box;background-color:transparent;overflow:visible;transition:none}.page-switcher-sheet[data-v-07e603fa]:before{content:"";position:absolute;top:0;left:0;right:0;z-index:0;height:156px;border:1px solid var(--tabs-switcher-border-color);border-radius:14px;background:var(--tabs-dropdown-popper-bg-color);box-shadow:var(--tabs-dropdown-popper-shadow);opacity:0;transform:translateY(-4px) scaleY(.72);transform-origin:top center;pointer-events:none;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}.page-switcher.is-open .page-switcher-sheet[data-v-07e603fa]:before{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.page-switcher-title[data-v-07e603fa]{line-height:1}.page-switcher-arrow[data-v-07e603fa]{margin-left:auto;font-size:.75em;color:var(--tabs-switcher-accent-color);transition:transform .3s ease}.page-switcher.is-open .page-switcher-arrow[data-v-07e603fa]{transform:rotate(180deg)}.page-option[data-v-07e603fa]{position:relative;z-index:1;display:inline-flex;flex:0 0 auto;align-items:center;box-sizing:border-box;gap:7px;width:100%;min-width:148px;height:37px;padding:0 12px;border:none;border-radius:10px;color:var(--admin-container-color);background:transparent;font-size:15px;font-weight:600;font-family:inherit;white-space:nowrap;cursor:pointer;transition:none}.page-option-list[data-v-07e603fa]{position:absolute;top:41px;left:5px;right:5px;display:flex;flex-direction:column;align-items:stretch;opacity:0;pointer-events:none;transform:translateY(-9px) scaleY(.86);transform-origin:top center;transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-list .page-option[data-v-07e603fa]{position:relative;z-index:1;width:100%}.page-option-highlight[data-v-07e603fa]{position:absolute;top:0;left:0;right:0;z-index:0;height:37px;border-radius:10px;background:var(--tabs-switcher-hover-bg);opacity:0;pointer-events:none;transform:translateY(calc(var(--hovered-option-index)*37px));transition:opacity .3s ease,transform .3s cubic-bezier(.22,1,.36,1)}.page-option-highlight.is-visible[data-v-07e603fa]{opacity:1}.page-switcher.is-open .page-option-list[data-v-07e603fa]{opacity:1;pointer-events:auto;transform:translateY(0) scaleY(1)}.page-option.is-current[data-v-07e603fa]{height:37px;gap:8px;padding:0 14px;color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg);border:1px solid var(--tabs-switcher-current-border-color);box-shadow:none;font-size:1.1em;font-weight:700;line-height:1.15}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:17px;font-size:1.05em}.page-option.is-current>.page-option-icon[data-v-07e603fa],.page-option.is-current>.page-switcher-arrow[data-v-07e603fa],.page-option.is-current>.page-switcher-title[data-v-07e603fa]{translate:0 1px}.page-option[data-v-07e603fa]:hover{color:var(--tabs-switcher-accent-color);background-color:transparent}.page-option.is-current[data-v-07e603fa]:hover{color:var(--tabs-switcher-current-color);background:var(--tabs-switcher-current-bg)}.page-option-icon[data-v-07e603fa]{width:16px;color:var(--tabs-switcher-accent-color)}@media (max-width:768px){.tabs[data-v-07e603fa]{gap:6px}.page-switcher-title[data-v-07e603fa]{max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-switcher-sheet[data-v-07e603fa]{width:-moz-max-content;width:max-content;max-width:calc(100vw - 96px)}.page-switcher-sheet[data-v-07e603fa]:before{height:136px;transform:translateY(-3px) scaleY(.72)}.page-option[data-v-07e603fa]{justify-content:flex-start;min-width:0;height:32px;padding:0 10px;font-size:12px;gap:6px}.page-option-icon[data-v-07e603fa]{width:15px}.page-option-list[data-v-07e603fa]{top:36px;transform:translateY(-8px) scaleY(.86)}.page-option-highlight[data-v-07e603fa]{height:32px;transform:translateY(calc(var(--hovered-option-index)*32px))}.page-option.is-current[data-v-07e603fa]{height:32px;gap:5px;padding:0 10px;font-size:1em}.page-option.is-current>.page-option-icon[data-v-07e603fa]{width:16px}.page-option.is-current>.page-switcher-arrow[data-v-07e603fa]{margin-left:4px}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.1em;padding:3px}}.tabs-language-switcher[data-v-07e603fa]{--lang-icon-size:1.3em;--lang-icon-color:var(--admin-theme-toggle-color);transition:color .3s ease;padding:5px}.tabs[data-v-07e603fa] #themeToggle,.tabs[data-v-07e603fa] #themeToggle:hover,.tabs[data-v-07e603fa] .language-switcher,.tabs[data-v-07e603fa] .language-switcher:hover{background-color:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.container[data-v-57eabdee]{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-57eabdee] .el-container,[data-v-57eabdee] .el-main{overflow:visible}[data-v-57eabdee] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-57eabdee]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,box-shadow .25s ease;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-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a;box-shadow:none}@media (max-width:768px){.header-content[data-v-57eabdee]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-57eabdee]{font-size:.95em}.header-content .actions[data-v-57eabdee]{gap:10px}.search-card[data-v-57eabdee] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-57eabdee] .el-input__wrapper{padding:0 10px}.search-card[data-v-57eabdee] .el-input__inner:focus{width:65vw}}.header-content[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.82);box-shadow:none;transform:translateX(-50%)}html.dark .header-content[data-v-57eabdee]:hover{background:rgba(35,35,35,.85);box-shadow:none}.header-icon[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-57eabdee]{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:0 10px;margin-top:12px;margin-bottom:4px}.breadcrumb-view-toggle[data-v-57eabdee]{height:32px;box-sizing:border-box;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid #d9dce2;border-radius:10px;background:hsla(0,0%,100%,.72);box-shadow:none;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb-view-toggle[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb-view-toggle[data-v-57eabdee]:hover{border-color:#bfc4cc;background:hsla(0,0%,100%,.85)}html.dark .breadcrumb-view-toggle[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-view-button[data-v-57eabdee]{width:28px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:5px;color:var(--el-text-color-secondary);background:transparent;cursor:pointer;transition:color .16s ease}.breadcrumb-view-button[data-v-57eabdee]:hover{color:#38bdf8}.breadcrumb-view-button.is-active[data-v-57eabdee]{color:#38bdf8;background:rgba(56,189,248,.12);box-shadow:none}.breadcrumb-view-icon[data-v-57eabdee]{width:14px;height:14px}@media (max-width:768px){.breadcrumb-container[data-v-57eabdee]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-top:8px;margin-bottom:2px}.breadcrumb-view-toggle[data-v-57eabdee]{height:28px;padding:2px;border-radius:8px}.breadcrumb-view-button[data-v-57eabdee]{width:24px;height:22px;border-radius:6px}.breadcrumb-view-icon[data-v-57eabdee]{width:12px;height:12px}}.stats-badge[data-v-57eabdee]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:hsla(0,0%,100%,.72);padding:4px 12px;border-radius:12px;border:1px solid #d9dce2;box-shadow:none;transition:background-color .2s ease,border-color .2s ease;white-space:nowrap;flex-shrink:0;margin-left:auto}html.dark .stats-badge[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.stats-badge[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .stats-badge[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.stats-badge-icon[data-v-57eabdee]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-57eabdee]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-57eabdee]{font-size:9px}}.header-content .actions[data-v-57eabdee]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-57eabdee]{margin-top:10px}}.header-content .actions i[data-v-57eabdee]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-57eabdee]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-57eabdee]{color:#c0c4cc;pointer-events:none}.header-content .actions .enabled[data-v-57eabdee]{color:var(--admin-purple)}.search-area[data-v-57eabdee]{margin-left:auto;margin-right:20px;display:flex;align-items:center;gap:8px}@media (max-width:768px){.search-area[data-v-57eabdee]{margin-right:0;margin-left:0;margin-top:10px;gap:6px}}.search-card[data-v-57eabdee]{display:flex;align-items:center}.search-card[data-v-57eabdee] .el-input{background:transparent!important;border:none!important;box-shadow:none!important}.search-card[data-v-57eabdee] .el-input__wrapper{border-radius:20px;background:var(--glass-bg);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}.search-card[data-v-57eabdee] .el-input__inner{width:280px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-57eabdee] .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-57eabdee] .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-57eabdee] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-57eabdee] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner{width:45vw;height:32px;font-size:1em}}.search-card[data-v-57eabdee] .el-input__inner:focus{width:350px}@media (max-width:768px){.search-card[data-v-57eabdee] .el-input__inner:focus{width:55vw}}.search-icon[data-v-57eabdee]{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-57eabdee]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-57eabdee]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-57eabdee] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-57eabdee]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px);transition:padding-bottom .24s ease}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:72px}@media (max-width:768px){.main-container[data-v-57eabdee]{margin-top:12vh;padding:16px 10px}.main-container.has-batch-toolbar[data-v-57eabdee]{padding-bottom:86px}}.content[data-v-57eabdee]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}.content.is-drag-selecting[data-v-57eabdee],.list-view.is-drag-selecting[data-v-57eabdee]{cursor:crosshair}.content.is-drag-selecting[data-v-57eabdee] .img-card:hover,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .file-icon,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .folder-icon-svg,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .image-preview,.content.is-drag-selecting[data-v-57eabdee] .img-card:hover .video-preview{transform:none}.content.is-drag-selecting[data-v-57eabdee] .image-preview:hover{opacity:1}.content.is-drag-selecting[data-v-57eabdee] .action-btn:hover{transform:none;background:hsla(0,0%,100%,.15)}.list-view.is-drag-selecting[data-v-57eabdee] .list-item:hover{background:transparent}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-btn:hover{color:var(--el-text-color-regular);background:var(--el-fill-color)}.list-view.is-drag-selecting[data-v-57eabdee] .list-action-danger:hover{background:var(--el-fill-color)}.empty-state[data-v-57eabdee]{grid-column:1/-1;grid-row:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--admin-container-color);opacity:.6}.empty-icon[data-v-57eabdee]{font-size:64px;margin-bottom:20px;color:var(--admin-container-color);opacity:.3}.empty-text[data-v-57eabdee]{font-size:18px;font-weight:500;margin:0 0 8px 0}.empty-hint[data-v-57eabdee]{font-size:14px;margin:0;opacity:.7}.list-empty[data-v-57eabdee]{padding:80px 20px}@media (max-width:768px){.content[data-v-57eabdee]{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;gap:8px;margin-top:15px;padding:0;flex-grow:0;min-height:auto;align-content:start;align-items:start}}.list-view[data-v-57eabdee]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border:1px solid var(--glass-border);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-57eabdee]{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-57eabdee]{display:flex;align-items:center}.list-col-checkbox[data-v-57eabdee]{justify-content:center;min-width:40px}@media (max-width:768px){.list-header[data-v-57eabdee]{display:none}}.pagination-container[data-v-57eabdee]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-57eabdee]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-57eabdee] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-57eabdee] .el-pager li{background:hsla(0,0%,100%,.72);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .el-pager li{background:rgba(22,22,24,.75);border:1px solid #34343a}.pagination-container[data-v-57eabdee] .el-pager li:hover{color:#38bdf8;background:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .pagination-container[data-v-57eabdee] .el-pager li:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.pagination-container[data-v-57eabdee] .el-pager li.is-active{background:#0ea5e9!important;color:#fff!important;border-radius:10px;box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-57eabdee] .el-pager li.is-active:hover{box-shadow:none!important}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{background:hsla(0,0%,100%,.72)!important;border-radius:10px!important;min-width:36px;height:36px;border:1px solid #d9dce2!important;box-shadow:none;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .pagination-container[data-v-57eabdee] .btn-next,html.dark .pagination-container[data-v-57eabdee] .btn-prev{background:rgba(22,22,24,.75)!important;border:1px solid #34343a!important}.pagination-container[data-v-57eabdee] .btn-next:hover,.pagination-container[data-v-57eabdee] .btn-prev:hover{color:#38bdf8;background:hsla(0,0%,100%,.85)!important;border-color:#bfc4cc!important}html.dark .pagination-container[data-v-57eabdee] .btn-next:hover,html.dark .pagination-container[data-v-57eabdee] .btn-prev:hover{background:rgba(22,22,24,.88)!important;border-color:#4a4a52!important}.pagination-right[data-v-57eabdee]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-57eabdee]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-57eabdee]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-57eabdee]{width:50px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:hsla(0,0%,100%,.72);box-shadow:none;border:1px solid #d9dce2;border-radius:8px;padding:0 8px;height:28px}html.dark .page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{background:rgba(22,22,24,.75);border:1px solid #34343a}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-57eabdee]{background:#0ea5e9;border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:none;transition:all .3s ease}.page-jump .jump-btn[data-v-57eabdee]:hover{box-shadow:none}@media (max-width:768px){.pagination-container[data-v-57eabdee]{flex-direction:column;gap:8px;margin-top:14px;padding-bottom:10px}.pagination-center[data-v-57eabdee]{order:0;gap:6px;flex-wrap:wrap;justify-content:center}.pagination-container[data-v-57eabdee] .el-pager li{min-width:30px;height:30px;line-height:30px;margin:0 2px;border-radius:8px;font-size:12px}.pagination-container[data-v-57eabdee] .btn-next,.pagination-container[data-v-57eabdee] .btn-prev{position:static!important;top:auto!important;left:auto!important;right:auto!important;display:none!important;min-width:30px!important;width:30px!important;height:30px!important;border-radius:8px!important;font-size:12px;scale:1!important}.pagination-right[data-v-57eabdee]{position:static;width:100%;justify-content:center;gap:6px;order:1}.page-jump[data-v-57eabdee],.page-total[data-v-57eabdee]{font-size:12px}.page-jump .jump-input[data-v-57eabdee]{width:40px}.page-jump .jump-input[data-v-57eabdee] .el-input__wrapper{height:26px;padding:0 6px;border-radius:7px}.page-jump .jump-input[data-v-57eabdee] .el-input__inner{height:26px;line-height:26px;font-size:12px}.page-jump .jump-btn[data-v-57eabdee]{height:26px;padding:0 10px;border-radius:7px;font-size:11px}.refresh-btn[data-v-57eabdee]{width:30px!important;min-width:30px!important;padding:0!important}.load-more[data-v-57eabdee],.refresh-btn[data-v-57eabdee]{--el-button-size:30px;height:30px!important;border-radius:8px!important;font-size:12px!important}.load-more[data-v-57eabdee]{min-height:30px!important;padding:0 10px!important}}.refresh-btn[data-v-57eabdee]{cursor:pointer;background:hsla(0,0%,100%,.72);box-shadow:none;color:#38bdf8;border:1px solid #d9dce2;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:background-color .25s ease,border-color .25s ease,color .25s ease}html.dark .refresh-btn[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.refresh-btn[data-v-57eabdee]:hover{background:hsla(0,0%,100%,.85);border-color:#bfc4cc;color:#0ea5e9}html.dark .refresh-btn[data-v-57eabdee]:hover{background:rgba(22,22,24,.88);border-color:#4a4a52}.load-more[data-v-57eabdee]{cursor:pointer;background:#0ea5e9;box-shadow:none;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-57eabdee]:hover{box-shadow:none}[data-v-57eabdee] .btn-prev{left:8px}[data-v-57eabdee] .btn-next,[data-v-57eabdee] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-57eabdee] .btn-next{right:8px}@media (min-width:768px){[data-v-57eabdee] .el-pagination.is-background .btn-next,[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;box-shadow:none;transition:background-color .25s ease,border-color .25s ease}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev{background-color:rgba(22,22,24,.75);border:1px solid #34343a}[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark[data-v-57eabdee] .el-pagination.is-background .btn-next:hover,html.dark[data-v-57eabdee] .el-pagination.is-background .btn-prev:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}}.question-icon[data-v-57eabdee]{margin:0 3px}.breadcrumb[data-v-57eabdee]{height:32px;box-sizing:border-box;display:flex;align-items:center;padding:0 12px;background-color:hsla(0,0%,100%,.72);border:1px solid #d9dce2;border-radius:10px;font-size:.95em;box-shadow:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .breadcrumb[data-v-57eabdee]{background-color:rgba(22,22,24,.75);border:1px solid #34343a}.breadcrumb[data-v-57eabdee]:hover{background-color:hsla(0,0%,100%,.85);border-color:#bfc4cc}html.dark .breadcrumb[data-v-57eabdee]:hover{background-color:rgba(22,22,24,.88);border-color:#4a4a52}.breadcrumb-home-icon[data-v-57eabdee]{font-size:14px;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.breadcrumb-home-icon[data-v-57eabdee]:hover{color:#38bdf8}[data-v-57eabdee] .el-breadcrumb__item{cursor:pointer}[data-v-57eabdee] .el-breadcrumb,[data-v-57eabdee] .el-breadcrumb__inner,[data-v-57eabdee] .el-breadcrumb__item,[data-v-57eabdee] .el-breadcrumb__separator{display:inline-flex;align-items:center;height:100%;line-height:32px}[data-v-57eabdee] .el-breadcrumb__inner{cursor:pointer}[data-v-57eabdee] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.mobile-directory-trigger[data-v-57eabdee]{display:none;align-items:center;flex:1 1 auto;min-width:0;height:28px;box-sizing:border-box;gap:6px;padding:0 10px;background:hsla(0,0%,100%,.72);border-radius:8px;border:1px solid #d9dce2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease}html.dark .mobile-directory-trigger[data-v-57eabdee]{background:rgba(22,22,24,.75);border:1px solid #34343a}.mobile-directory-trigger[data-v-57eabdee]:active{background:hsla(0,0%,100%,.85);border-color:#bfc4cc}.mobile-directory-icon[data-v-57eabdee]{flex:0 0 auto;font-size:12px;color:#38bdf8}.mobile-directory-path[data-v-57eabdee]{display:block;flex:1 1 auto;min-width:0;font-size:12px;font-weight:500;line-height:1;color:var(--el-text-color-primary);max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-57eabdee]{flex:0 0 auto;font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-57eabdee]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-57eabdee]{display:flex}.desktop-only[data-v-57eabdee]{display:none!important}.breadcrumb-container[data-v-57eabdee]{padding:0;margin-left:0;width:100%;box-sizing:border-box}}.drag-select-overlay[data-v-57eabdee]{position:fixed;background:rgba(24,144,255,.1);border:1px solid rgba(24,144,255,.6);pointer-events:none;z-index:9999;border-radius:2px} \ No newline at end of file diff --git a/frontend-dist/css/903.7a90c42f.css.gz b/frontend-dist/css/903.7a90c42f.css.gz new file mode 100644 index 00000000..883913e5 Binary files /dev/null and b/frontend-dist/css/903.7a90c42f.css.gz differ diff --git a/frontend-dist/css/957.db5680df.css.gz b/frontend-dist/css/957.db5680df.css.gz deleted file mode 100644 index 346301cd..00000000 Binary files a/frontend-dist/css/957.db5680df.css.gz and /dev/null differ diff --git a/frontend-dist/css/app.c8e85cb3.css b/frontend-dist/css/app.ffc502cb.css similarity index 100% rename from frontend-dist/css/app.c8e85cb3.css rename to frontend-dist/css/app.ffc502cb.css diff --git a/frontend-dist/css/app.c8e85cb3.css.gz b/frontend-dist/css/app.ffc502cb.css.gz similarity index 100% rename from frontend-dist/css/app.c8e85cb3.css.gz rename to frontend-dist/css/app.ffc502cb.css.gz diff --git a/frontend-dist/img/background.de27f549.jpg b/frontend-dist/img/background.de27f549.jpg new file mode 100644 index 00000000..99511863 Binary files /dev/null and b/frontend-dist/img/background.de27f549.jpg differ diff --git a/frontend-dist/img/background.ea1b7ee7.jpg b/frontend-dist/img/background.ea1b7ee7.jpg deleted file mode 100644 index 3bd894b5..00000000 Binary files a/frontend-dist/img/background.ea1b7ee7.jpg and /dev/null differ diff --git a/frontend-dist/index.html b/frontend-dist/index.html index ca9d643d..367904be 100644 --- a/frontend-dist/index.html +++ b/frontend-dist/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/frontend-dist/index.html.gz b/frontend-dist/index.html.gz index 51127257..4c9ab56e 100644 Binary files a/frontend-dist/index.html.gz and b/frontend-dist/index.html.gz differ diff --git a/frontend-dist/js/148.b1b1da05.js b/frontend-dist/js/148.b1b1da05.js new file mode 100644 index 00000000..4ba35a97 --- /dev/null +++ b/frontend-dist/js/148.b1b1da05.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[148],{213:function(e,t,o){"use strict";o(85331),o(19104)},732:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i=["href","target"],l=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,s.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,s.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,l)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.de27f549.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.src="",setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&(o.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50148:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},M={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",M,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",A,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Me={class:"section-header"},Ae={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Ae,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-3620a174"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=(e,t)=>e>>>t|e<<32-t;function At(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Mt(o[u-15],7)^Mt(o[u-15],18)^o[u-15]>>>3,t=Mt(o[u-2],17)^Mt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Mt(n,6)^Mt(n,11)^Mt(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=Mt(a,2)^Mt(a,13)^Mt(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(At(t,e),o=0)}while(i+64<=s.length)At(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),At(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),At(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-5afbc1b3"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(91543);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-579106c0"]]);var To=So},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},91543:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-66e6a1f0"]]);var m=h},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); +//# sourceMappingURL=148.b1b1da05.js.map \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.gz b/frontend-dist/js/148.b1b1da05.js.gz new file mode 100644 index 00000000..cb69fbb0 Binary files /dev/null and b/frontend-dist/js/148.b1b1da05.js.gz differ diff --git a/frontend-dist/js/148.b1b1da05.js.map b/frontend-dist/js/148.b1b1da05.js.map new file mode 100644 index 00000000..7e2ad724 --- /dev/null +++ b/frontend-dist/js/148.b1b1da05.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/148.b1b1da05.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?0f5d","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?9e81","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?73af","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?cc0a","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&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-17f54292\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\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.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&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-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, 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: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\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 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=3eb5cfdc\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=3620a174&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=3620a174&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-3620a174\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\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_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=5afbc1b3&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=5afbc1b3&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-5afbc1b3\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&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-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\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_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\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_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=579106c0&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=579106c0&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-579106c0\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&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-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&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-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&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-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","t","e","module","exports","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","error","icon","fetchDirectoryTree","$t","_","ref","data","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","loading","args","openDrawer","modelValue","drawerVisible","direction","title","source","children","label","windowWidth","innerWidth","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","useDarkMode","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","style","id","textContent","head","existingStyle","remove","createBackgroundElements","container","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","max","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","immediate","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","count","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","step","compressQuality","precision","serverCompress","components","ChannelIcon","emits","set","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","scrollContainer","setScrollTop","deep","commit","location","protocol","host","handlePaste","storeAutoReUpload","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizedPath","normalizeDirectoryPath","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parentPath","child","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","handleToggleClick","mode","isAuto","stroke","cx","cy","mask","x1","y1","x2","y2"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/148.b1b1da05.js.map.gz b/frontend-dist/js/148.b1b1da05.js.map.gz new file mode 100644 index 00000000..4fc0c27c Binary files /dev/null and b/frontend-dist/js/148.b1b1da05.js.map.gz differ diff --git a/frontend-dist/js/21.e06c66b8.js.gz b/frontend-dist/js/21.e06c66b8.js.gz deleted file mode 100644 index e824af9f..00000000 Binary files a/frontend-dist/js/21.e06c66b8.js.gz and /dev/null differ diff --git a/frontend-dist/js/21.e06c66b8.js.map b/frontend-dist/js/21.e06c66b8.js.map deleted file mode 100644 index a6c33e99..00000000 --- a/frontend-dist/js/21.e06c66b8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/21.e06c66b8.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&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-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.e06c66b8.js.map.gz b/frontend-dist/js/21.e06c66b8.js.map.gz deleted file mode 100644 index b9078eb2..00000000 Binary files a/frontend-dist/js/21.e06c66b8.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/21.e06c66b8.js b/frontend-dist/js/21.f318bc2e.js similarity index 98% rename from frontend-dist/js/21.e06c66b8.js rename to frontend-dist/js/21.f318bc2e.js index 9208340d..ab25b1d4 100644 --- a/frontend-dist/js/21.e06c66b8.js +++ b/frontend-dist/js/21.f318bc2e.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); -//# sourceMappingURL=21.e06c66b8.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[21],{7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,n){e.exports=n.p+"img/background.de27f549.jpg"},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):n&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(n);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const n=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${n}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,r=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const r=this.userConfig?.[e];if(!a||void 0!==r)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,g=this.useDarkMode,u=n(g?10732:7835),d=new Image;d.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},d.src=u},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return g}});var a=n(56768);const s=["title"];function r(e,t,n,r,o,i){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>i.toggleLocale&&i.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),i={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(i,[["render",r],["__scopeId","data-v-08567d0a"]]);var g=c}}]); +//# sourceMappingURL=21.f318bc2e.js.map \ No newline at end of file diff --git a/frontend-dist/js/21.f318bc2e.js.gz b/frontend-dist/js/21.f318bc2e.js.gz new file mode 100644 index 00000000..84d1c9ff Binary files /dev/null and b/frontend-dist/js/21.f318bc2e.js.gz differ diff --git a/frontend-dist/js/21.f318bc2e.js.map b/frontend-dist/js/21.f318bc2e.js.map new file mode 100644 index 00000000..abf3e2b7 --- /dev/null +++ b/frontend-dist/js/21.f318bc2e.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/21.f318bc2e.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&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-08567d0a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/21.f318bc2e.js.map.gz b/frontend-dist/js/21.f318bc2e.js.map.gz new file mode 100644 index 00000000..560efb5e Binary files /dev/null and b/frontend-dist/js/21.f318bc2e.js.map.gz differ diff --git a/frontend-dist/js/278.66af4a0a.js.gz b/frontend-dist/js/278.66af4a0a.js.gz deleted file mode 100644 index 950975d3..00000000 Binary files a/frontend-dist/js/278.66af4a0a.js.gz and /dev/null differ diff --git a/frontend-dist/js/278.66af4a0a.js.map b/frontend-dist/js/278.66af4a0a.js.map deleted file mode 100644 index fc729148..00000000 --- a/frontend-dist/js/278.66af4a0a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/278.66af4a0a.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?4bb2","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=0c389049&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=0c389049&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-0c389049\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/278.66af4a0a.js.map.gz b/frontend-dist/js/278.66af4a0a.js.map.gz deleted file mode 100644 index d333020c..00000000 Binary files a/frontend-dist/js/278.66af4a0a.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/278.66af4a0a.js b/frontend-dist/js/278.bb8355a5.js similarity index 99% rename from frontend-dist/js/278.66af4a0a.js rename to frontend-dist/js/278.bb8355a5.js index b8100f9b..0880ddff 100644 --- a/frontend-dist/js/278.66af4a0a.js +++ b/frontend-dist/js/278.bb8355a5.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[278],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},18278:function(e,t,a){a.r(t),a.d(t,{default:function(){return P}});var n=a(80047),s=(a(85331),a(99648),a(56768)),i=a(24232);const o={class:"whitelist-container"},r=["innerHTML"],l={class:"whitelist-content"},c={class:"back-button-wrapper"},d={class:"status-animation"},u={class:"status-icon"},g={class:"status-badge"},m={class:"status-info"},h={class:"status-title"},p={class:"status-description"},k={class:"status-actions"},b={class:"help-info"},y={class:"help-text"},f={class:"quick-links"};function v(e,t,a,v,I,B){const w=(0,s.g2)("font-awesome-icon"),C=n.S2;return(0,s.uX)(),(0,s.CE)("div",o,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,r),(0,s.Lk)("div",l,[(0,s.Lk)("div",c,[(0,s.bF)(C,{class:"back-button",onClick:B.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",d,[(0,s.Lk)("div",u,[(0,s.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,s.Lk)("div",g,[(0,s.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,s.Lk)("div",m,[(0,s.Lk)("h1",h,(0,i.v_)(e.$t("whitelist.title")),1),(0,s.Lk)("p",p,(0,i.v_)(e.$t("whitelist.description")),1),(0,s.Lk)("div",k,[(0,s.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,s.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,s.Lk)("div",b,[(0,s.Lk)("p",y,(0,i.v_)(e.$t("whitelist.helpText")),1),(0,s.Lk)("div",f,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"cloud-upload-alt"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.uploadImage")),1)]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"redo"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,s.Fv)('
',1))])}a(44114);var I=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,I.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const x=(0,W.A)(C,[["render",v],["__scopeId","data-v-0c389049"]]);var P=x},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=278.66af4a0a.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[278],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},18278:function(e,t,a){a.r(t),a.d(t,{default:function(){return P}});var n=a(80047),s=(a(85331),a(99648),a(56768)),i=a(24232);const o={class:"whitelist-container"},r=["innerHTML"],l={class:"whitelist-content"},c={class:"back-button-wrapper"},d={class:"status-animation"},u={class:"status-icon"},g={class:"status-badge"},m={class:"status-info"},h={class:"status-title"},p={class:"status-description"},k={class:"status-actions"},b={class:"help-info"},y={class:"help-text"},f={class:"quick-links"};function v(e,t,a,v,I,B){const w=(0,s.g2)("font-awesome-icon"),C=n.S2;return(0,s.uX)(),(0,s.CE)("div",o,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,r),(0,s.Lk)("div",l,[(0,s.Lk)("div",c,[(0,s.bF)(C,{class:"back-button",onClick:B.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",d,[(0,s.Lk)("div",u,[(0,s.bF)(w,{icon:"shield-alt",class:"shield-icon"}),(0,s.Lk)("div",g,[(0,s.bF)(w,{icon:"clock",class:"clock-icon"})])])]),(0,s.Lk)("div",m,[(0,s.Lk)("h1",h,(0,i.v_)(e.$t("whitelist.title")),1),(0,s.Lk)("p",p,(0,i.v_)(e.$t("whitelist.description")),1),(0,s.Lk)("div",k,[(0,s.bF)(C,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:B.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"home",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goHome")),1)]),_:1},8,["onClick"]),(0,s.bF)(C,{size:"large",class:"action-btn secondary-btn",onClick:B.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(w,{icon:"arrow-left",class:"btn-icon"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.goBack")),1)]),_:1},8,["onClick"])]),(0,s.Lk)("div",b,[(0,s.Lk)("p",y,(0,i.v_)(e.$t("whitelist.helpText")),1),(0,s.Lk)("div",f,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>B.goHome&&B.goHome(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"cloud-upload-alt"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.uploadImage")),1)]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>B.refreshPage&&B.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(w,{icon:"redo"}),(0,s.eW)(" "+(0,i.v_)(e.$t("whitelist.refreshPage")),1)])])]),t[2]||(t[2]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[3]||(t[3]=(0,s.Fv)('
',1))])}a(44114);var I=a(74354),B=a(60782),w=a(48903),C={name:"WhiteListOn",mixins:[w.A],computed:{...(0,B.L8)(["useDarkMode","userConfig"])},setup(){(0,I.u)({title:"White List On",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".whitelist-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()}}},W=a(71241);const x=(0,W.A)(C,[["render",v],["__scopeId","data-v-0c389049"]]);var P=x},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=278.bb8355a5.js.map \ No newline at end of file diff --git a/frontend-dist/js/278.bb8355a5.js.gz b/frontend-dist/js/278.bb8355a5.js.gz new file mode 100644 index 00000000..475e0d60 Binary files /dev/null and b/frontend-dist/js/278.bb8355a5.js.gz differ diff --git a/frontend-dist/js/278.bb8355a5.js.map b/frontend-dist/js/278.bb8355a5.js.map new file mode 100644 index 00000000..d9b2bf37 --- /dev/null +++ b/frontend-dist/js/278.bb8355a5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/278.bb8355a5.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/WhiteListOn.vue?4bb2","webpack://sanyue_imghub/./src/views/WhiteListOn.vue","webpack://sanyue_imghub/./src/views/WhiteListOn.vue?05e5","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"whitelist-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"whitelist-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-title\"\n};\nconst _hoisted_10 = {\n class: \"status-description\"\n};\nconst _hoisted_11 = {\n class: \"status-actions\"\n};\nconst _hoisted_12 = {\n class: \"help-info\"\n};\nconst _hoisted_13 = {\n class: \"help-text\"\n};\nconst _hoisted_14 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n class: \"shield-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"clock\",\n class: \"clock-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h1\", _hoisted_9, _toDisplayString(_ctx.$t('whitelist.title')), 1), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('whitelist.description')), 1), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goHome')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.goBack')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"p\", _hoisted_13, _toDisplayString(_ctx.$t('whitelist.helpText')), 1), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.uploadImage')), 1)]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('whitelist.refreshPage')), 1)])])]), _cache[2] || (_cache[2] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[3] || (_cache[3] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'WhiteListOn',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'White List On',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.whitelist-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./WhiteListOn.vue?vue&type=template&id=0c389049&scoped=true\"\nimport script from \"./WhiteListOn.vue?vue&type=script&lang=js\"\nexport * from \"./WhiteListOn.vue?vue&type=script&lang=js\"\n\nimport \"./WhiteListOn.vue?vue&type=style&index=0&id=0c389049&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-0c389049\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","$t","type","goBack","href","args","refreshPage","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/278.bb8355a5.js.map.gz b/frontend-dist/js/278.bb8355a5.js.map.gz new file mode 100644 index 00000000..1b528663 Binary files /dev/null and b/frontend-dist/js/278.bb8355a5.js.map.gz differ diff --git a/frontend-dist/js/331.0b44b778.js.gz b/frontend-dist/js/331.0b44b778.js.gz deleted file mode 100644 index cc4a4c9a..00000000 Binary files a/frontend-dist/js/331.0b44b778.js.gz and /dev/null differ diff --git a/frontend-dist/js/331.0b44b778.js.map b/frontend-dist/js/331.0b44b778.js.map deleted file mode 100644 index c4132fc8..00000000 --- a/frontend-dist/js/331.0b44b778.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/331.0b44b778.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/BlockImage.vue?6078","webpack://sanyue_imghub/./src/views/BlockImage.vue","webpack://sanyue_imghub/./src/views/BlockImage.vue?e417","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"blocked-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"blocked-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-info\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"ban-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation\",\n class: \"exclamation-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_cache[9] || (_cache[9] = _createElementVNode(\"h1\", {\n class: \"status-title\"\n }, \"图片访问被禁止\", -1)), _cache[10] || (_cache[10] = _createElementVNode(\"p\", {\n class: \"status-description\"\n }, \" 抱歉,当前图片已被禁止访问。 \", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"status-description-en\"\n }, \" Sorry, current image is prohibited from being accessed. \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[8] || (_cache[8] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"您可以尝试:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 刷新页面 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.contactSupport && $options.contactSupport(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 联系支持 \", -1))])])]), _cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[13] || (_cache[13] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BlockedImage',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'Blocked Image',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.blocked-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n },\n contactSupport() {\n // 可以实现联系支持的逻辑\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/issues', '_blank');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BlockImage.vue?vue&type=template&id=98114f90&scoped=true\"\nimport script from \"./BlockImage.vue?vue&type=script&lang=js\"\nexport * from \"./BlockImage.vue?vue&type=script&lang=js\"\n\nimport \"./BlockImage.vue?vue&type=style&index=0&id=98114f90&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-98114f90\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","type","goBack","href","args","refreshPage","contactSupport","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","open","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/331.0b44b778.js.map.gz b/frontend-dist/js/331.0b44b778.js.map.gz deleted file mode 100644 index 8f89858f..00000000 Binary files a/frontend-dist/js/331.0b44b778.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/331.0b44b778.js b/frontend-dist/js/331.4f42d273.js similarity index 99% rename from frontend-dist/js/331.0b44b778.js rename to frontend-dist/js/331.4f42d273.js index bae99abf..677ef5f7 100644 --- a/frontend-dist/js/331.0b44b778.js +++ b/frontend-dist/js/331.4f42d273.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[331],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},16331:function(e,t,a){a.r(t),a.d(t,{default:function(){return C}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"blocked-container"},o=["innerHTML"],r={class:"blocked-content"},l={class:"back-button-wrapper"},c={class:"status-animation"},d={class:"status-icon"},u={class:"status-badge"},g={class:"status-info"},m={class:"status-actions"},p={class:"help-info"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[(0,s.Lk)("div",d,[(0,s.bF)(f,{icon:"ban",class:"ban-icon"}),(0,s.Lk)("div",u,[(0,s.bF)(f,{icon:"exclamation",class:"exclamation-icon"})])])]),(0,s.Lk)("div",g,[t[9]||(t[9]=(0,s.Lk)("h1",{class:"status-title"},"图片访问被禁止",-1)),t[10]||(t[10]=(0,s.Lk)("p",{class:"status-description"}," 抱歉,当前图片已被禁止访问。 ",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"status-description-en"}," Sorry, current image is prohibited from being accessed. ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[3]||(t[3]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[8]||(t[8]=(0,s.Lk)("p",{class:"help-text"},"您可以尝试:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[5]||(t[5]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[6]||(t[6]=(0,s.eW)(" 刷新页面 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.contactSupport&&y.contactSupport(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"question-circle"}),t[7]||(t[7]=(0,s.eW)(" 联系支持 ",-1))])])]),t[12]||(t[12]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[13]||(t[13]=(0,s.Fv)('
',1))])}a(44114);var b=a(74354),y=a(60782),f=a(48903),I={name:"BlockedImage",mixins:[f.A],computed:{...(0,y.L8)(["useDarkMode","userConfig"])},setup(){(0,b.u)({title:"Blocked Image",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".blocked-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()},contactSupport(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/issues","_blank")}}},v=a(71241);const B=(0,v.A)(I,[["render",k],["__scopeId","data-v-98114f90"]]);var C=B},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=331.0b44b778.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[331],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},16331:function(e,t,a){a.r(t),a.d(t,{default:function(){return C}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"blocked-container"},o=["innerHTML"],r={class:"blocked-content"},l={class:"back-button-wrapper"},c={class:"status-animation"},d={class:"status-icon"},u={class:"status-badge"},g={class:"status-info"},m={class:"status-actions"},p={class:"help-info"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[(0,s.Lk)("div",d,[(0,s.bF)(f,{icon:"ban",class:"ban-icon"}),(0,s.Lk)("div",u,[(0,s.bF)(f,{icon:"exclamation",class:"exclamation-icon"})])])]),(0,s.Lk)("div",g,[t[9]||(t[9]=(0,s.Lk)("h1",{class:"status-title"},"图片访问被禁止",-1)),t[10]||(t[10]=(0,s.Lk)("p",{class:"status-description"}," 抱歉,当前图片已被禁止访问。 ",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"status-description-en"}," Sorry, current image is prohibited from being accessed. ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[3]||(t[3]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[8]||(t[8]=(0,s.Lk)("p",{class:"help-text"},"您可以尝试:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[5]||(t[5]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[6]||(t[6]=(0,s.eW)(" 刷新页面 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.contactSupport&&y.contactSupport(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"question-circle"}),t[7]||(t[7]=(0,s.eW)(" 联系支持 ",-1))])])]),t[12]||(t[12]=(0,s.Lk)("div",{class:"powered-by"},[(0,s.Lk)("p",null,[(0,s.eW)("Powered By: "),(0,s.Lk)("a",{href:"https://github.com/MarSeventh/CloudFlare-ImgBed",class:"project-link"}," CloudFlare-ImgBed ")])],-1))])]),t[13]||(t[13]=(0,s.Fv)('
',1))])}a(44114);var b=a(74354),y=a(60782),f=a(48903),I={name:"BlockedImage",mixins:[f.A],computed:{...(0,y.L8)(["useDarkMode","userConfig"])},setup(){(0,b.u)({title:"Blocked Image",meta:[{name:"robots",content:"noindex, nofollow"},{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"UTF-8"}]})},mounted(){this.initializeBackground("uploadBkImg",".blocked-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},refreshPage(){window.location.reload()},contactSupport(){window.open("https://github.com/MarSeventh/CloudFlare-ImgBed/issues","_blank")}}},v=a(71241);const B=(0,v.A)(I,[["render",k],["__scopeId","data-v-98114f90"]]);var C=B},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,i()},o.onerror=()=>{e.src=t,i()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); +//# sourceMappingURL=331.4f42d273.js.map \ No newline at end of file diff --git a/frontend-dist/js/331.4f42d273.js.gz b/frontend-dist/js/331.4f42d273.js.gz new file mode 100644 index 00000000..7dd51e43 Binary files /dev/null and b/frontend-dist/js/331.4f42d273.js.gz differ diff --git a/frontend-dist/js/331.4f42d273.js.map b/frontend-dist/js/331.4f42d273.js.map new file mode 100644 index 00000000..6ffd0ee9 --- /dev/null +++ b/frontend-dist/js/331.4f42d273.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/331.4f42d273.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/BlockImage.vue?6078","webpack://sanyue_imghub/./src/views/BlockImage.vue","webpack://sanyue_imghub/./src/views/BlockImage.vue?e417","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"blocked-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"blocked-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"status-animation\"\n};\nconst _hoisted_6 = {\n class: \"status-icon\"\n};\nconst _hoisted_7 = {\n class: \"status-badge\"\n};\nconst _hoisted_8 = {\n class: \"status-info\"\n};\nconst _hoisted_9 = {\n class: \"status-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-info\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n class: \"ban-icon\"\n }), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation\",\n class: \"exclamation-icon\"\n })])])]), _createElementVNode(\"div\", _hoisted_8, [_cache[9] || (_cache[9] = _createElementVNode(\"h1\", {\n class: \"status-title\"\n }, \"图片访问被禁止\", -1)), _cache[10] || (_cache[10] = _createElementVNode(\"p\", {\n class: \"status-description\"\n }, \" 抱歉,当前图片已被禁止访问。 \", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"status-description-en\"\n }, \" Sorry, current image is prohibited from being accessed. \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[8] || (_cache[8] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"您可以尝试:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 刷新页面 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.contactSupport && $options.contactSupport(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 联系支持 \", -1))])])]), _cache[12] || (_cache[12] = _createElementVNode(\"div\", {\n class: \"powered-by\"\n }, [_createElementVNode(\"p\", null, [_createTextVNode(\"Powered By: \"), _createElementVNode(\"a\", {\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n class: \"project-link\"\n }, \" CloudFlare-ImgBed \")])], -1))])]), _cache[13] || (_cache[13] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { useHead } from '@vueuse/head';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BlockedImage',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig'])\n },\n setup() {\n useHead({\n title: 'Blocked Image',\n meta: [{\n name: 'robots',\n content: 'noindex, nofollow'\n }, {\n name: 'viewport',\n content: 'width=device-width, initial-scale=1'\n }, {\n charset: 'UTF-8'\n }]\n });\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.blocked-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n refreshPage() {\n window.location.reload();\n },\n contactSupport() {\n // 可以实现联系支持的逻辑\n window.open('https://github.com/MarSeventh/CloudFlare-ImgBed/issues', '_blank');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BlockImage.vue?vue&type=template&id=98114f90&scoped=true\"\nimport script from \"./BlockImage.vue?vue&type=script&lang=js\"\nexport * from \"./BlockImage.vue?vue&type=script&lang=js\"\n\nimport \"./BlockImage.vue?vue&type=style&index=0&id=98114f90&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-98114f90\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","type","goBack","href","args","refreshPage","contactSupport","name","mixins","backgroundManager","computed","setup","u","title","meta","content","charset","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","open","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/331.4f42d273.js.map.gz b/frontend-dist/js/331.4f42d273.js.map.gz new file mode 100644 index 00000000..475679c4 Binary files /dev/null and b/frontend-dist/js/331.4f42d273.js.map.gz differ diff --git a/frontend-dist/js/870.9e7db652.js b/frontend-dist/js/870.9e7db652.js deleted file mode 100644 index 5e5a7910..00000000 --- a/frontend-dist/js/870.9e7db652.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[870],{213:function(e,t,o){"use strict";o(85331),o(19104)},732:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i=["href","target"],l=["alt","src"];function n(e,t,o,n,r,d){return(0,a.uX)(),(0,a.CE)("a",{href:d.logoHref,target:o.target,class:(0,s.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,s.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,l)],10,i)}var r=o(60782),d={name:"Logo",props:{href:{type:String,default:"https://github.com/MarSeventh/CloudFlare-ImgBed"},target:{type:String,default:"_blank",validator:e=>["_blank","_self","_parent","_top"].includes(e)},alt:{type:String,default:"Sanyue logo"},customSrc:{type:String,default:""},position:{type:String,default:"fixed",validator:e=>["fixed","relative","absolute","static"].includes(e)},size:{type:String,default:"normal",validator:e=>["small","normal","large"].includes(e)},enableHover:{type:Boolean,default:!0},useConfigLink:{type:Boolean,default:!1}},computed:{...(0,r.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||o(33153)},logoHref(){return this.useConfigLink&&this.userConfig?.logoLink?this.userConfig.logoLink:this.href},logoClasses(){return{logo:!0,[`logo--${this.position}`]:!0,[`logo--${this.size}`]:!0,"logo--hover-enabled":this.enableHover}}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-17f54292"]]);var p=u},2893:function(e,t,o){"use strict";o(85331)},3261:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},7835:function(e,t,o){"use strict";e.exports=o.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,o){"use strict";o(85331)},10732:function(e,t,o){"use strict";e.exports=o.p+"img/background.ea1b7ee7.jpg"},11393:function(e,t,o){o(79577),o(41549),o(49797),o(49631),o(35623),o(64979),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(a){if(t[a])return t[a].exports;var s=t[a]={i:a,l:!1,exports:{}};return e[a].call(s.exports,s,s.exports,o),s.l=!0,s.exports}return o.m=e,o.c=t,o.d=function(e,t,a){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(o.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)o.d(a,s,function(t){return e[t]}.bind(null,s));return a},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var a;function s(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return l}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return g}),o.d(t,"urltoImage",function(){return f}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return k}),o.d(t,"EImageType",function(){return a}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(a||(a={}));var i=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function l(e,t=.92,o=a.JPEG){return i(this,void 0,void 0,function*(){return s(o)||(o=a.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=a.JPEG){return new Promise(a=>e.toBlob(e=>a(e),o,t))}var r=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let a=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let l=i.length;const n=new Uint8Array(l);for(;l--;)n[l]=i.charCodeAt(l);return s(t)&&(a=t),new Blob([n],{type:a})})}function c(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),a.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const a=document.createEvent("MouseEvents");a.initEvent("click",!1,!1),o.dispatchEvent(a),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),a=document.createElement("canvas"),s=a.getContext("2d");let i,l;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;l=e.width*t,i=e.height*t}else l=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=l,a.width=i):(a.height=i,a.width=l),o.orientation){case 3:s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 8:s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;case 2:s.translate(a.width,0),s.scale(-1,1),s.drawImage(e,0,0,a.width,a.height);break;case 4:s.translate(a.width,0),s.scale(-1,1),s.rotate(180*Math.PI/180),s.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:s.translate(a.width,0),s.scale(-1,1),s.rotate(90*Math.PI/180),s.drawImage(e,0,-a.width,a.height,a.width);break;case 7:s.translate(a.width,0),s.scale(-1,1),s.rotate(270*Math.PI/180),s.drawImage(e,-a.height,0,a.height,a.width);break;default:s.drawImage(e,0,0,a.width,a.height)}return a})}function g(e){return fetch(e).then(e=>e.blob())}function f(e){return new Promise((t,o)=>{const a=new Image;a.onload=()=>t(a),a.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),a.src=e})}var y=function(e,t,o,a){return new(o||(o=Promise))(function(s,i){function l(e){try{r(a.next(e))}catch(e){i(e)}}function n(e){try{r(a.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?s(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(l,n)}r((a=a.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;s(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield l(u,t.quality,n),g=yield d(h,i);return g.size>e.size?e:g})}function k(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;s(t.type)&&(h=t.type,u=t.type);const g=yield c(r),f=yield m(g,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield l(f,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...k].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;k[0]=y,b+=Math.pow(.5,e+1)}}const v=yield d(y,u);return v.size>e.size?e:v})}}])})},13378:function(e,t,o){"use strict";o(85331),o(38736),o(79899)},15616:function(e,t,o){"use strict";o(85331),o(97197)},18785:function(e,t,o){"use strict";o(85331)},19104:function(e,t,o){"use strict";o(85331)},23597:function(e,t,o){"use strict";o(85331)},26870:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return To}});var a=o(78507),s=(o(85331),o(213),o(80047)),i=(o(99648),o(56768)),l=o(24232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},g=["src"],f=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},k={class:"grid-actions"},v={class:"grid-info"},C=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],$=["src"],S={key:2,class:"file-icon-wrapper-small"},T={class:"list-info"},x=["title"],_=["title"],I={class:"list-meta"},M={class:"upload-time"},A={class:"list-actions"},E={key:0,class:"load-more-container"},D={key:0,class:"loading-indicator"},R={key:1,class:"load-more-hint"},B={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,N,z){const V=(0,i.g2)("font-awesome-icon"),H=s.S2,Q=a.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,l.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[(0,i.Lk)("h2",null,(0,l.v_)(e.$t("uploadHistory.title")),1),(0,i.Lk)("span",d,(0,l.v_)(e.$t("uploadHistory.totalRecords",{count:N.totalCount})),1)]),(0,i.Lk)("div",c,[(0,i.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[4]||(t[4]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,l.v_)(e.date),1)]),"grid"===N.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,g)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,f)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(V,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",k,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",v,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,C),(0,i.Lk)("div",w,(0,l.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(V,{icon:"file"})]))]),(0,i.Lk)("div",T,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,l.v_)(e.name),9,x),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,l.v_)(e.url),9,_)]),(0,i.Lk)("div",I,[(0,i.Lk)("div",M,(0,l.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",A,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(V,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",E,[N.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(V,{icon:"spinner",spin:""}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadHistory.loading")),1)])):((0,i.uX)(),(0,i.CE)("div",R,(0,l.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):N.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",B,(0,l.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(V,{icon:"history",class:"empty-icon"}),(0,i.Lk)("p",null,(0,l.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),a=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[a]||(e[a]=[]),e[a].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,a=t.scrollHeight,s=t.clientHeight;a-o-s<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm(this.$t("uploadHistory.clearConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success(this.$t("uploadHistory.recordsCleared"))}).catch(()=>{})},deleteItem(e){this.$confirm(this.$t("uploadHistory.deleteConfirmMessage"),this.$t("uploadHistory.clearConfirmTitle"),{confirmButtonText:this.$t("uploadHistory.clearConfirmOk"),cancelButtonText:this.$t("uploadHistory.clearConfirmCancel"),type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success(this.$t("uploadHistory.recordDeleted"))}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${s} ${i}:${l}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success(this.$t("uploadHistory.linkCopied"))}).catch(()=>{this.$message.error(this.$t("uploadHistory.copyFailed"))})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(96682)}}},z=o(71241);const V=(0,z.A)(N,[["render",W],["__scopeId","data-v-f70e7770"]]);var H=V,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),O=(o(50333),o(74757)),j=o(55558),G=(o(10456),o(39623)),K=(o(29092),o(76018)),J=(o(96808),o(67819),o(66810)),Y=(o(34396),o(4885),o(53676));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},se={class:"setting-label"},ie={key:0,class:"setting-item"},le={class:"setting-label"},ne={class:"setting-item"},re={class:"setting-label"},de={class:"setting-item"},ce={class:"setting-label"},ue={class:"dialog-section"},pe={class:"section-header"},he={class:"section-title"},me={class:"section-content"},ge={class:"dialog-section"},fe={class:"section-header"},ye={class:"section-title"},be={class:"section-content"},ke={class:"setting-item"},ve={class:"setting-label"},Ce={class:"setting-item"},we={class:"setting-label"},Fe={key:0,class:"setting-item slider-item"},Le={class:"setting-label"},Ue={class:"slider-wrapper"},$e={class:"slider-input-wrapper"},Se={key:1,class:"setting-item slider-item"},Te={class:"setting-label"},xe={class:"slider-wrapper"},_e={class:"slider-input-wrapper"},Ie={key:0,class:"dialog-section"},Me={class:"section-header"},Ae={class:"section-title"},Ee={class:"section-content"},De={class:"setting-item"},Re={class:"setting-label"},Be={class:"dialog-action"};function Pe(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,i.g2)("font-awesome-icon"),m=a.R7,g=K.P9,f=K.AV,y=G.WK,b=j.qi,k=O.B8,v=q.lq,C=s.S2,w=X.kZ;return(0,i.uX)(),(0,i.Wv)(w,{title:e.$t("uploadSettings.title"),modelValue:d.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>d.visible=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[(0,i.Lk)("span",te,(0,l.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,i.Lk)("div",oe,[(0,i.Lk)("div",ae,[(0,i.Lk)("span",se,(0,l.v_)(e.$t("uploadSettings.channelType")),1),(0,i.bF)(p,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"telegram",class:"channel-icon channel-brand-telegram"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"cfr2",class:"channel-icon channel-brand-cfr2"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(u,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"s3",class:"channel-icon channel-brand-s3"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(u,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"discord",class:"channel-icon channel-brand-discord"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"huggingface",class:"channel-icon channel-brand-huggingface"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1}),(0,i.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{type:"webdav",class:"channel-icon channel-brand-webdav"}),t[18]||(t[18]=(0,i.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",ie,[(0,i.Lk)("span",le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(f,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:e.$t("uploadSettings.autoSelect"),clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(g,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",ne,[(0,i.Lk)("span",re,(0,l.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,i.bF)(y,{"model-value":o.uploadFolder,"onUpdate:modelValue":d.handleUploadFolderInput,placeholder:e.$t("uploadSettings.uploadDirectoryPlaceholder"),class:"setting-input"},null,8,["model-value","onUpdate:modelValue","placeholder"])]),(0,i.Lk)("div",de,[(0,i.Lk)("span",ce,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ue,[(0,i.Lk)("div",pe,[(0,i.Lk)("span",he,(0,l.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,i.Lk)("div",me,[(0,i.bF)(p,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"cog",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,i.bF)(u,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,i.bF)(u,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,i.bF)(u,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",ge,[(0,i.Lk)("div",fe,[(0,i.Lk)("span",ye,(0,l.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",be,[(0,i.Lk)("div",ke,[(0,i.Lk)("span",ve,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",Ce,[(0,i.Lk)("span",we,(0,l.v_)(e.$t("uploadSettings.fileCompress")),1),(0,i.bF)(b,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Fe,[(0,i.Lk)("span",Le,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ue,[(0,i.bF)(k,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",$e,[(0,i.bF)(v,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[19]||(t[19]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",Se,[(0,i.Lk)("span",Te,[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,i.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",xe,[(0,i.bF)(k,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",_e,[(0,i.bF)(v,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[20]||(t[20]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("div",Me,[(0,i.Lk)("span",Ae,(0,l.v_)(e.$t("uploadSettings.serverCompress")),1),(0,i.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",Ee,[(0,i.Lk)("div",De,[(0,i.Lk)("span",Re,(0,l.v_)(e.$t("uploadSettings.enableCompress")),1),(0,i.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Be,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var We={name:"UploadSettingsDialog",components:{ChannelIcon:Y.A},methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Ne=(0,z.A)(We,[["render",Pe]]);var ze=Ne,Ve=o(88559),He=(o(85970),o(813)),Qe=(o(34896),o(69655)),Xe=(o(2893),o(74253));o(79899);const qe={class:"upload-list-item"},Oe=["href"],je={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Ge=["src"],Ke=["src"],Je={key:2,style:{width:"10vw","border-radius":"12px"}},Ye={class:"upload-list-item-content"},Ze={class:"upload-list-item-name-wrapper"},et={key:0,class:"upload-list-item-url"},tt={class:"upload-list-item-url-row"},ot={class:"upload-list-item-url-row"},at={key:1,class:"upload-list-item-progress"},st={class:"upload-list-item-action"};function it(e,t,o,a,s,n){const r=(0,i.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,i.g2)("Link"),h=He.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",qe,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",je,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,Ke)):((0,i.uX)(),(0,i.CE)("div",Je,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Oe),(0,i.Lk)("div",Ye,[(0,i.Lk)("div",Ze,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",et,[(0,i.Lk)("div",tt,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",ot,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",st,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var lt=o(57477);const nt=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],rt=["mp4","webm","ogg","mkv"];var dt={name:"UploadFileItem",components:{Link:lt.Link,Delete:lt.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return nt.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return rt.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("uploadForm.copyFailed")})})}}};const ct=(0,z.A)(dt,[["render",it],["__scopeId","data-v-3620a174"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(3261),o(47358));const gt={class:"upload-form"},ft={class:"upload-card-glow",ref:"uploadCardGlow"},yt=["innerHTML"],bt={key:0,class:"upload-card"},kt={class:"paste-card-actions"},vt={class:"upload-list-dashboard-action"},Ct={class:"modern-action-group"},wt={class:"modern-dropdown-item-content"},Ft={class:"modern-action-btn modern-action-btn-danger"};function Lt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=He.tk,h=mt.j5,m=G.WK,g=s.S2,f=J.Zh,y=J.MQ,b=ht.Ik,k=(0,i.g2)("List"),v=(0,i.g2)("Checked"),C=(0,i.g2)("Failed"),w=Xe.$g,F=(0,i.g2)("font-awesome-icon"),L=a.R7,U=j.qi,$=pt.c6,S=pt.Iy,T=pt.dW,x=ut,_=Ve.kA;return(0,i.uX)(),(0,i.CE)("div",gt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",ft,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,l.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,l.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,l.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,yt)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",bt,[(0,i.bF)(b,{class:(0,l.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:e.$t("upload.pasteUrlPlaceholder"),type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","placeholder","rows"]),(0,i.Lk)("div",kt,[(0,i.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(f,{label:"save"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteSave")),1)]),_:1}),(0,i.bF)(f,{label:"external"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.pasteExternal")),1)]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,l.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,l.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,l.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",vt,[(0,i.Lk)("div",Ct,[(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",wt,[(0,i.Lk)("span",null,(0,l.v_)(e.$t("uploadForm.autoRetry")),1),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)($,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,i.bF)($,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",Ft,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(x,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var Ut=o(457),$t=o(76334),St=o(60782);function Tt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function xt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function _t(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Tt(e.srcID,e.name,t);Object.assign(e,o)})}const It=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Mt=(e,t)=>e>>>t|e<<32-t;function At(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=Mt(o[u-15],7)^Mt(o[u-15],18)^o[u-15]>>>3,t=Mt(o[u-2],17)^Mt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,s,i,l,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Mt(n,6)^Mt(n,11)^Mt(n,25),t=n&r^~n&d,p=c+e+t+It[u]+o[u]>>>0,h=Mt(a,2)^Mt(a,13)^Mt(a,22),m=a&s^a&i^s&i,g=h+m>>>0;c=d,d=r,r=n,n=l+p>>>0,l=i,i=s,s=a,a=p+g>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+s>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+l>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function Et(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(s){a+=s.length;let i=0;if(o>0){const a=64-o,l=Math.min(a,s.length);t.set(s.subarray(0,l),o),o+=l,i=l,64===o&&(At(t,e),o=0)}while(i+64<=s.length)At(s.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),At(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(s/4294967296),!1),i.setUint32(60,s>>>0,!1),At(t,e);let l="";for(let t=0;t<8;t++)l+=e[t].toString(16).padStart(8,"0");return l}}}async function Dt(e){const t=Et(),o=4194304;let a=0;while(athis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){_t(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&_t(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,St.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,s;o>0?(a=e.substring(0,o),s=e.substring(o)):(a=e,s="");const i=s.length+4,l=t-i-3;return l<=0?e.substring(0,t-3)+"...":a.substring(0,l)+"..."+a.slice(-4)+s},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),a=o?.uploadChannel||this.uploadChannel;if("external"===a)return void this.uploadSingleFile(e);if("huggingface"===a){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===a){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const s=20971520;e.file.size>s?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,a=t.uploadChannel||this.uploadChannel,s=this.autoRetry&&"external"!==a,i="external"===a?"default":this.uploadNameType,l=new AbortController;this.abortControllers.set(e.file.uid,l);const n=new FormData;if(n.append("file",e.file),"external"===a&&n.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Dt(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ut.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+s+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:l.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,a=new AbortController;this.abortControllers.set(e.file.uid,a);const s="discord"===o?9437184:16777216,i=e.file.size,l=e.file.type||"application/octet-stream",n=Math.ceil(i/s),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let u=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),u=await Dt(e.file),console.log("SHA256 computed:",u)}catch(p){console.error("Failed to compute SHA256:",p)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",l),t.append("totalChunks",n.toString());const h=await(0,Ut.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!h.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+h.data.message);const m=h.data.uploadId;console.log("分块上传初始化成功,uploadId:",m);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=m);const f=3,y=new Array(n).fill(0);let b=0,k=!1,v="",C=!1;const w=async t=>{if(k||C)return;const u=t*s,h=Math.min(u+s,i),g=e.file.slice(u,h),f=new FormData;f.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",n.toString()),f.append("uploadId",m),f.append("originalFileName",e.file.name),f.append("originalFileType",l);let b=0;const w=3;while(b{if(k||C)return;const a=Math.round(o.loaded/o.total*100);y[t]=a;const s=Math.round(y.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:s,file:e.file})}})}catch(p){if("CanceledError"===p.name||"ERR_CANCELED"===p.code)return C=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${b}/${w}):`,p),b>=w)throw k=!0,v=`分块 ${t+1}/${n} 上传失败: ${p.message}`,new Error(v);await new Promise(e=>setTimeout(e,2e3*b))}}},F=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),p.response&&401!==p.response.status?(this.exceptionList.push(e),e.onError(p,e.file)):p.response||(this.exceptionList.push(e),e.onError(p,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.$t("uploadForm.deleted",{name:this.truncateFilename(e.name)})})},async cleanupUploadResources(e,t=0){try{await(0,Ut.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const a=o.uploadChannel||this.uploadChannel;if("external"!==a){const a=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+a;const s=Tt(a,t.name,this.rootUrl);Object.assign(o,s),o.srcID=a}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.$t("uploadForm.uploadSuccess",{name:this.truncateFilename(t.name)})}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(a){this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.$t("uploadForm.uploadFailed",{name:this.truncateFilename(t.name)})),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(xt(e,this.selectedUrlForm)),this.$message({type:"success",message:this.$t("uploadForm.copySuccess")})):this.$message({type:"warning",message:this.$t("uploadForm.fileNotUploaded")})},beforeUpload(e){return new Promise(async(t,o)=>{let a=e;const s=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(s)try{const t=await this.convertImageToWebp(e);t&&(a=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,l=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)$t.compressAccurately(a,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(this.$t("uploadForm.compressedFileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))),this.uploading=!0;const s=new File([t],a.name,{type:t.type});s.uid=e.uid;const i=this.uploadCount++,l=this.serverCompress&&s.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(s,l):setTimeout(()=>{n(s,l),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(l){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);0===e?n(a,t):setTimeout(()=>{n(a,t),this.uploadCount--},300*e)}else this.$message.error(this.$t("uploadForm.fileTooLarge",{name:a.name})),o(this.$t("uploadForm.fileSizeTooLarge"))})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>xt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:this.$t("uploadForm.copyAllSuccess")})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:this.$t("uploadForm.fileListCleared")})):this.$message({type:"info",message:this.$t("uploadForm.fileListEmpty")})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:this.$t("uploadForm.successFilesCleared")})):this.$message({type:"info",message:this.$t("uploadForm.successFilesEmpty")})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,l=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:s,htmlURL:i,ubbURL:l,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&Ut.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(s){a=""}}""===a&&(o=t.exec(i),null!=o&&o[1]&&(a=decodeURIComponent(o[1])))}if(""===a){const t=new URL(e);a=t.pathname.split("/").pop()}if(""===a){const o=new URL(e);let s=o.pathname.split(".").pop();(!s||""===s||s.length>10)&&(s="bin"),a="PastedFile"+Date.now()+t+"."+s}const l=o.data,n=new File([l],a,{type:l.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:this.$t("uploadForm.urlRequestFailed")})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:this.$t("uploadForm.noFailedFiles")})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?this.$t("uploadForm.autoRetryOn"):this.$t("uploadForm.autoRetryOff")}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:this.$t("uploadForm.maxRetryReached",{name:e.name,max:this.maxRetryCount})})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Dt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const a=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...a));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,Ut.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:s,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const l=i.data;if(console.log("Upload info:",l),l.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(l.needsLfs&&l.uploadAction){const{href:t,header:a}=l.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,l,o);else{console.log("Uploading to S3 (basic)...");const s=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!s.ok){const e=await s.text();throw new Error(`S3 upload failed: ${s.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,Ut.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:l.fullId,filePath:l.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:l.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(a){if("CanceledError"===a.name||"ERR_CANCELED"===a.code||"AbortError"===a.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",a),this.exceptionList.push(e),e.onError(a,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:s,header:i}=a,l=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${l}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,a=t*l,s=Math.min(a+l,e.file.size),n=e.file.slice(a,s);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(s,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const a=new Image,s=document.createElement("canvas"),i=s.getContext("2d");a.onload=()=>{s.width=a.width,s.height=a.height,i.drawImage(a,0,0),s.toBlob(s=>{if(s){const o=e.name,a=o.lastIndexOf("."),i=a>0?o.substring(0,a)+".webp":o+".webp",l=new File([s],i,{type:"image/webp"});l.uid=e.uid,t(l)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(a.src)},"image/webp",.92)},a.onerror=()=>{URL.revokeObjectURL(a.src),o(new Error(this.$t("uploadForm.imageLoadFailed")))},a.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),a=e.clientX-o.left,s=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=s+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Bt=(0,z.A)(Rt,[["render",Lt],["__scopeId","data-v-f81fd314"]]);var Pt=Bt,Wt=o(732),Nt=o(33892),zt=o(45130);const Vt={class:"directory-suggestion-input",ref:"wrapperRef"},Ht={class:"suggestion-dropdown"},Qt={class:"suggestion-list"},Xt=["title","onMousedown"];function qt(e,t,o,a,s,n){const r=G.WK;return(0,i.uX)(),(0,i.CE)("div",Vt,[(0,i.bF)(r,{ref:"inputRef",modelValue:n.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputValue=e),placeholder:o.placeholder,onFocus:n.handleFocus,onBlur:n.handleBlur,onInput:n.handleInput},null,8,["modelValue","placeholder","onFocus","onBlur","onInput"]),(0,i.bo)((0,i.Lk)("div",Ht,[(0,i.Lk)("ul",Qt,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(s.suggestions,(e,t)=>((0,i.uX)(),(0,i.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,zt.D$)(t=>n.selectItem(e),["prevent"])},(0,l.v_)(e.value),41,Xt))),128))])],512),[[zt.aG,s.dropdownVisible&&s.suggestions.length>0]])],512)}var Ot={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:""}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,dropdownVisible:!1,isFocused:!1,suggestions:[]}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},watch:{modelValue(){this.isFocused&&this.refreshSuggestions()}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.ensureDirectoryTreeLoaded(),this.$emit("focus"),setTimeout(()=>{this.isFocused&&(this.refreshSuggestions(),this.dropdownVisible=!0)},500)},handleBlur(){this.isFocused=!1,this.dropdownVisible=!1,this.$emit("blur")},handleInput(e){this.$nextTick(()=>{this.refreshSuggestions(),this.isFocused&&(this.dropdownVisible=!0)})},selectItem(e){const t=e.value;this.inputValue=t,this.$emit("select",t);const o=this.normalizeDirectoryPath(t),a=this.directoryChildrenMap[o];a&&a.length>0?this.$nextTick(()=>{this.refreshSuggestions(),this.dropdownVisible=!0,this.$refs.inputRef?.focus()}):this.dropdownVisible=!1},refreshSuggestions(){this.suggestions=this.getDirectorySuggestions(this.modelValue||"")},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const a=this.normalizeDirectoryPath(e.path),s=Array.isArray(e.children)?e.children:[];t[a]=s.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),s.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await Ut.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),a=o.split("/"),s=a[a.length-1]||"",i=a.slice(0,-1).filter(Boolean),l=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:s,parentPath:l}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),a=this.directoryChildrenMap[o]||[];if(!t)return a.slice(0,10).map(e=>({value:e.path}));const s=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(s)).slice(0,10).map(e=>({value:e.path}))}}};const jt=(0,z.A)(Ot,[["render",qt],["__scopeId","data-v-28b8eda7"]]);var Gt=jt,Kt=o(91543);const Jt={class:"container"},Yt={class:"upload-home"},Zt={class:"quick-toolbar-actions"},eo={class:"quick-toolbar-actions-inner"},to={class:"header"},oo={class:"title"},ao={class:"title-crayon-text","aria-hidden":"true"},so={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},io={class:"dialog-section"},lo={class:"section-header"},no={class:"section-title"},ro={class:"section-content"},co={class:"dialog-section"},uo={class:"section-header"},po={class:"section-title"},ho={class:"section-content"},mo={class:"setting-item"},go={class:"setting-label"},fo={key:0,class:"setting-item"},yo={class:"setting-label"},bo={class:"dialog-action"},ko=["innerHTML"],vo={class:"dialog-footer"};function Co(e,t,o,n,r,d){const c=Kt.A,u=(0,i.g2)("font-awesome-icon"),p=s.S2,h=pt.c6,m=pt.Iy,g=pt.dW,f=Gt,y=G.WK,b=Nt.A,k=a.R7,v=Wt.A,C=Pt,w=J.ll,F=J.MQ,L=j.qi,U=X.kZ,$=ze,S=Q.A,T=H;return(0,i.uX)(),(0,i.CE)("div",Jt,[(0,i.Lk)("div",Yt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(g,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,l.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(f,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","placeholder","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(y,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:e.$t("upload.folderPlaceholder"),onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","placeholder","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(p,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,i.bF)(g,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(m,null,{default:(0,i.k6)(()=>[(0,i.bF)(h,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(h,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,i.eW)(" "+(0,l.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,i.bF)(h,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.history")),1)]),_:1}),(0,i.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,i.bF)(h,{command:"toggleLanguage"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,i.bF)(h,{command:"viewDocs"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,i.eW)(" "+(0,l.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",{class:(0,l.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,i.Lk)("div",Zt,[(0,i.Lk)("div",eo,[(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,i.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,i.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,i.bF)(p,{class:(0,l.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,i.bF)(v,{useConfigLink:!0}),(0,i.Lk)("div",to,[(0,i.Lk)("h1",oo,[(0,i.Lk)("span",ao,(0,l.v_)(d.ownerName)+" ImgHub",1),(0,i.Lk)("a",so,(0,l.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub ",-1))])]),(0,i.bF)(C,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:e.$t("settings.linkFormatTitle"),modelValue:r.showUrlDialog,"onUpdate:modelValue":t[10]||(t[10]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",io,[(0,i.Lk)("div",lo,[(0,i.Lk)("span",no,(0,l.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,i.Lk)("div",ro,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[6]||(t[6]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),(0,i.Lk)("span",null,(0,l.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",co,[(0,i.Lk)("div",uo,[(0,i.Lk)("span",po,(0,l.v_)(e.$t("settings.customLink")),1),(0,i.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,i.Lk)("div",ho,[(0,i.Lk)("div",mo,[(0,i.Lk)("span",go,(0,l.v_)(e.$t("settings.enableCustom")),1),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[7]||(t[7]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",fo,[(0,i.Lk)("span",yo,(0,l.v_)(e.$t("settings.customPrefix")),1),(0,i.bF)(y,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[8]||(t[8]=e=>r.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",bo,[(0,i.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,i.bF)($,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[11]||(t[11]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[12]||(t[12]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[13]||(t[13]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[14]||(t[14]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[15]||(t[15]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[16]||(t[16]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[17]||(t[17]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[18]||(t[18]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[19]||(t[19]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[20]||(t[20]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[21]||(t[21]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:e.$t("upload.announcementTitle"),modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",vo,[(0,i.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,i.k6)(()=>[(0,i.eW)((0,l.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,ko)]),_:1},8,["title","modelValue","width"]),(0,i.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var wo=o(46638),Fo=o(48903),Lo=o(90144),Uo=o(62388),$o={name:"UploadHome",mixins:[Fo.A],data(){return{selectedUrlForm:(0,Lo.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,isQuickToolbarOpen:!1,isQuickToolbarPinned:!1,showAnnouncementDialog:!1,announcementContent:"",displayedAnnouncementRefreshAt:null,showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,Uo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,St.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!0,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto",this.showAnnouncementIfNeeded()},components:{UploadForm:Pt,Footer:Q.A,ToggleDark:Kt.A,Logo:Wt.A,UploadHistory:H,UploadSettingsDialog:ze,DirectoryTreePicker:Nt.A,DirectorySuggestionInput:Gt},methods:{async fetchAvailableChannels(){try{const e=await Ut.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,a=this.availableChannels[this.uploadChannel]||[];t&&a.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&a.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,Uo.G)(e,{strict:t});return!!o.valid||(this.$message.error(o.error),!1)},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){Ut.A.post("/api/auth/logout",{authType:"user"},{withCredentials:!0}).finally(()=>{this.$store.commit("setUserLoggedIn",!1),this.$router.push("/login"),this.$message.success(this.$t("upload.logoutSuccess"))})},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleQuickToolbarMoreEnter(){this.isQuickToolbarOpen=!0},handleQuickToolbarLeave(){this.isQuickToolbarPinned||(this.isQuickToolbarOpen=!1)},toggleQuickToolbar(){this.isQuickToolbarPinned=!this.isQuickToolbarPinned,this.isQuickToolbarOpen=this.isQuickToolbarPinned},closeQuickToolbar(){this.isQuickToolbarPinned=!1,this.isQuickToolbarOpen=!1},handleQuickToolbarCommand(e){this.closeQuickToolbar(),"linkFormat"===e?this.openUrlDialog():"manage"===e?this.handleManage():"logout"===e&&this.handleLogout()},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){if("toggleTheme"===e)"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1));else if("toggleUploadMethod"===e)this.handleChangeUploadMethod();else if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},handleDesktopMenuCommand(e){if("viewDocs"===e)window.open("https://cfbed.sanyue.de/qa/","_blank");else if("showHistory"===e)this.showHistory=!0;else if("showAnnouncement"===e)this.handleShowAnnouncement();else if("toggleLanguage"===e){const e="zh-CN"===this.$i18n.locale?"en":"zh-CN";(0,wo.xS)(e)}},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?this.$t("theme.lightMode"):"light"===this.themeMode?this.$t("theme.darkMode"):this.$t("theme.autoMode")},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?this.openAnnouncement(e):this.$message.info(this.$t("upload.noAnnouncement"))},getAnnouncementRefreshAt(){const e=Number(this.userConfig?.announcementRefreshAt);return Number.isFinite(e)&&e>0?e:null},openAnnouncement(e){this.announcementContent=e,this.displayedAnnouncementRefreshAt=this.getAnnouncementRefreshAt(),this.showAnnouncementDialog=!0},showAnnouncementIfNeeded(){const e=this.userConfig?.announcement;if(!e)return;const t=this.getAnnouncementRefreshAt();if(t){const o=Number(localStorage.getItem("announcementAcknowledgedRefreshAt"));return void((!Number.isFinite(o)||t>o)&&this.openAnnouncement(e))}localStorage.getItem("announcementAcknowledgedAt")||this.openAnnouncement(e)},acknowledgeAnnouncement(){localStorage.setItem("announcementAcknowledgedAt",String(Date.now())),this.displayedAnnouncementRefreshAt&&localStorage.setItem("announcementAcknowledgedRefreshAt",String(this.displayedAnnouncementRefreshAt)),this.showAnnouncementDialog=!1},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const So=(0,z.A)($o,[["render",Co],["__scopeId","data-v-579106c0"]]);var To=So},30694:function(e,t,o){"use strict";o(85331)},33153:function(e,t,o){"use strict";e.exports=o.p+"img/logo.e8dbfa27.png"},33892:function(e,t,o){"use strict";o.d(t,{A:function(){return $}});var a=o(99114),s=(o(85331),o(30694),o(49385)),i=(o(37952),o(30650)),l=(o(19104),o(31802)),n=(o(13378),o(80047)),r=(o(99648),o(56768)),d=o(45130),c=o(24232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},g={class:"node-label"},f={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},k={class:"node-label"};function v(e,t,o,v,C,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=l.qk,$=i.Vc,S=s.pw,T=a.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)($,{key:0,visible:C.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>C.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[C.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",g,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:C.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>C.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",f,[C.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(C.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[(0,r.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:C.treeData,props:C.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[T,C.loading]])]),_:1},8,["modelValue","title"])],64))])}var C=o(457),w=o(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await C.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(71241);const U=(0,L.A)(F,[["render",v],["__scopeId","data-v-62eab69a"]]);var $=U},34396:function(e,t,o){"use strict";o(85331),o(4885)},34896:function(e,t,o){"use strict";o(85331)},37952:function(e,t,o){"use strict";o(85331),o(97197)},38736:function(e,t,o){"use strict";o(85331)},40670:function(e,t,o){"use strict";o(85331),o(99648),o(19104),o(85970)},48903:function(e,t,o){"use strict";var a=o(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const o=document.createElement("img");o.id="bg2",o.className="background-image2",o.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(o,e.firstChild)},initializeBackground(e,t=".login",o=!1,a=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:o,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),l=document.getElementById("bg2");if(!i||!l)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const n=this.userConfig?.[e];"bing"===n?this.setupBingWallpaper(i,l,t):Array.isArray(n)&&n.length>1?this.setupCustomWallpaperCarousel(i,l,n,t):Array.isArray(n)&&1===n.length?this.setupSingleCustomWallpaper(i,n[0],t):o&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,o){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,o,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,o,a){this.loadBackgroundImage(e,o[this.customWallPaperIndex],a,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,o)},this.bkInterval)},setupSingleCustomWallpaper(e,t,o){this.loadBackgroundImage(e,t,o)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=o(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,o,a=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,a);const s=document.querySelector(o);this.prepareBackgroundContainer(s);const i=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,a&&(e.style.transform="scale(1.045)")})})},l=new Image;l.onload=()=>{e.src=t,i()},l.onerror=()=>{e.src=t,i()},l.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const o=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${o}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const o=0!=e.style.opacity,a=o?e:t,s=o?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const l=new Image;l.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{a.style.opacity=0,this.prepareBackgroundMotion(a,!0)},1200)},50)},l.src=i},switchCustomWallpaper(e,t,o){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%o.length;const l=o[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1,this.prepareBackgroundMotion(i,!0);const n=new Image;n.onload=()=>{i.src=l,setTimeout(()=>{i.style.opacity=this.bkOpacity,i.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},n.src=l},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),o=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),o&&(o.style.transition="none",o.style.opacity=0,o.src="",setTimeout(()=>{o&&(o.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),o&&(o.style.opacity=0,setTimeout(()=>{o&&(o.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const l=document.getElementById("bg1"),n=document.getElementById("bg2");if(!l||!n)return void this.reinitializeBackground(e,t,a,s);const r=0!=l.style.opacity?l:n,d=0!=l.style.opacity?n:l,c=this.useDarkMode,u=o(c?10732:7835),p=new Image;p.onload=()=>{d.src=u,d.onload=()=>{r.style.opacity=0,setTimeout(()=>{d.style.opacity=this.bkOpacity},50)}},p.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},p.src=u},reinitializeBackground(e,t=".login",o=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,o,a)},100)}}}},50333:function(e,t,o){"use strict";o(85331),o(29092)},53676:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const s={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},l={key:2,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"};function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",(0,a.v6)(e.$attrs,{class:"channel-icon-wrapper"}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",s,[...t[0]||(t[0]=[(0,a.Lk)("path",{d:"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z"},null,-1)])])):"huggingface"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...t[2]||(t[2]=[(0,a.Lk)("path",{d:"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z"},null,-1)])])):((0,a.uX)(),(0,a.Wv)(c,{key:3,icon:d.fontAwesomeIcon},null,8,["icon"]))],16)}var r={name:"ChannelIcon",inheritAttrs:!1,props:{type:{type:String,required:!0}},computed:{fontAwesomeIcon(){const e={cfr2:["fab","cloudflare"],s3:["fab","aws"],discord:["fab","discord"]};return e[this.type]||"server"}}},d=o(71241);const c=(0,d.A)(r,[["render",n],["__scopeId","data-v-33933ada"]]);var u=c},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return s}});var a=o(46638);function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:a.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:a.Ay.global.t("validation.pathTraversalNotAllowed")};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:a.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:a.Ay.global.t("validation.consecutiveSlashNotAllowed")};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:a.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},67819:function(e,t,o){"use strict";o(85331)},70797:function(e,t,o){"use strict";o.d(t,{A:function(){return l}});o(44114);var a=o(25507),s=o(16915);let i=!1;async function l(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),o}},76334:function(e,t,o){e.exports=o(11393)},79899:function(e,t,o){"use strict";o(85331)},85970:function(e,t,o){"use strict";o(85331)},86975:function(e,t,o){"use strict";o.d(t,{A:function(){return p}});var a=o(56768),s=o(24232);const i={key:0,class:"page-footer"},l=["href"];function n(e,t,o,n,r,d){const c=(0,a.g2)("font-awesome-icon");return d.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,s.v_)(d.thisYear)+" Designed by ",1),t[0]||(t[0]=(0,a.Lk)("a",{class:"footer-name",href:"https://github.com/MarSeventh",target:"_blank"},"SanyueQi",-1)),t[1]||(t[1]=(0,a.eW)(" for You! ",-1)),(0,a.Lk)("a",{href:d.footerLink,target:"_blank"},[(0,a.bF)(c,{icon:"paper-plane",class:"footer-link-icon"})],8,l)])]))}var r=o(60782),d={name:"Footer",computed:{...(0,r.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},c=o(71241);const u=(0,c.A)(d,[["render",n],["__scopeId","data-v-08acbaa9"]]);var p=u},88830:function(e,t,o){"use strict";o(85331)},91543:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),s=o(45130),i=o(24232);const l={id:"themeMask"},n=["cx","cy","r"],r=["r"],d=["opacity"];function c(e,t,o,c,u,p){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>p.handleToggleClick&&p.handleToggleClick(...e))},[(0,a.bF)(s.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[u.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:u.isDark}]),width:"1.5em",height:"1.5em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,a.Lk)("mask",l,[t[1]||(t[1]=(0,a.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,a.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:u.isDark?"50%":"100%",cy:u.isDark?"23%":"0%",r:u.isDark?"9":"5"},null,8,n)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:u.isDark?"9":"5",mask:"url(#themeMask)"},null,8,r),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:u.isDark?0:1},[...t[2]||(t[2]=[(0,a.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,a.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,a.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,a.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,a.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,d)],2))]),_:1})])}var u={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},p=o(71241);const h=(0,p.A)(u,[["render",c],["__scopeId","data-v-66e6a1f0"]]);var m=h},95385:function(e,t,o){"use strict";o(85331)},96682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},96808:function(e,t,o){"use strict";o(85331),o(18785),o(67819),o(85970),o(19104)}}]); -//# sourceMappingURL=870.9e7db652.js.map \ No newline at end of file diff --git a/frontend-dist/js/870.9e7db652.js.gz b/frontend-dist/js/870.9e7db652.js.gz deleted file mode 100644 index 7664fd8b..00000000 Binary files a/frontend-dist/js/870.9e7db652.js.gz and /dev/null differ diff --git a/frontend-dist/js/870.9e7db652.js.map b/frontend-dist/js/870.9e7db652.js.map deleted file mode 100644 index a531aa4a..00000000 --- a/frontend-dist/js/870.9e7db652.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/870.9e7db652.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/Logo.vue?a6d2","webpack://sanyue_imghub/./src/components/Logo.vue","webpack://sanyue_imghub/./src/components/Logo.vue?4125","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?0f8d","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?0f5d","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?9e81","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?0613","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?6707","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?cc0a","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?4482","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js","webpack://sanyue_imghub/./src/components/Footer.vue?4f81","webpack://sanyue_imghub/./src/components/Footer.vue","webpack://sanyue_imghub/./src/components/Footer.vue?d468","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0f43","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce"],"sourcesContent":["import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"href\", \"target\"];\nconst _hoisted_2 = [\"alt\", \"src\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"a\", {\n href: $options.logoHref,\n target: $props.target,\n class: _normalizeClass(_ctx.logo - _ctx.link)\n }, [_createElementVNode(\"img\", {\n class: _normalizeClass($options.logoClasses),\n alt: $props.alt,\n src: $options.logoUrl\n }, null, 10, _hoisted_2)], 10, _hoisted_1);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Logo',\n props: {\n // Logo链接地址(可被用户配置覆盖)\n href: {\n type: String,\n default: 'https://github.com/MarSeventh/CloudFlare-ImgBed'\n },\n // 链接打开方式\n target: {\n type: String,\n default: '_blank',\n // _blank, _self, _parent, _top\n validator: value => ['_blank', '_self', '_parent', '_top'].includes(value)\n },\n // 图片alt文本\n alt: {\n type: String,\n default: 'Sanyue logo'\n },\n // 自定义logo图片URL(可选)\n customSrc: {\n type: String,\n default: ''\n },\n // Logo位置样式\n position: {\n type: String,\n default: 'fixed',\n // fixed, relative, absolute\n validator: value => ['fixed', 'relative', 'absolute', 'static'].includes(value)\n },\n // Logo大小\n size: {\n type: String,\n default: 'normal',\n // small, normal, large\n validator: value => ['small', 'normal', 'large'].includes(value)\n },\n // 是否启用悬停动画\n enableHover: {\n type: Boolean,\n default: true\n },\n // 是否允许使用用户配置的链接(仅上传页面启用)\n useConfigLink: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n ...mapGetters(['userConfig']),\n logoUrl() {\n // 优先级:customSrc > 用户配置 > 默认图片\n return this.customSrc || this.userConfig?.logoUrl || require('../assets/logo.png');\n },\n logoHref() {\n // 只有启用 useConfigLink 时才使用用户配置的链接\n if (this.useConfigLink && this.userConfig?.logoLink) {\n return this.userConfig.logoLink;\n }\n return this.href;\n },\n logoClasses() {\n return {\n 'logo': true,\n [`logo--${this.position}`]: true,\n [`logo--${this.size}`]: true,\n 'logo--hover-enabled': this.enableHover\n };\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Logo.vue?vue&type=template&id=17f54292&scoped=true\"\nimport script from \"./Logo.vue?vue&type=script&lang=js\"\nexport * from \"./Logo.vue?vue&type=script&lang=js\"\n\nimport \"./Logo.vue?vue&type=style&index=0&id=17f54292&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-17f54292\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.$t('uploadHistory.title')), 1), _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadHistory.totalRecords', {\n count: $data.totalCount\n })), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.switchView'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadHistory.clearRecords'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadHistory.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, _toDisplayString(_ctx.$t('uploadHistory.pullToLoadMore')), 1))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, _toDisplayString(_ctx.$t('uploadHistory.noMoreRecords')), 1)) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", null, _toDisplayString(_ctx.$t('uploadHistory.emptyHistory')), 1)]))], 2);\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.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm(this.$t('uploadHistory.clearConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success(this.$t('uploadHistory.recordsCleared'));\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm(this.$t('uploadHistory.deleteConfirmMessage'), this.$t('uploadHistory.clearConfirmTitle'), {\n confirmButtonText: this.$t('uploadHistory.clearConfirmOk'),\n cancelButtonText: this.$t('uploadHistory.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success(this.$t('uploadHistory.recordDeleted'));\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success(this.$t('uploadHistory.linkCopied'));\n }).catch(() => {\n this.$message.error(this.$t('uploadHistory.copyFailed'));\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=f70e7770&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=f70e7770&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-f70e7770\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, 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: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-header\"\n};\nconst _hoisted_3 = {\n class: \"section-title\"\n};\nconst _hoisted_4 = {\n class: \"section-content\"\n};\nconst _hoisted_5 = {\n class: \"setting-item\"\n};\nconst _hoisted_6 = {\n class: \"setting-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"setting-item\"\n};\nconst _hoisted_10 = {\n class: \"setting-label\"\n};\nconst _hoisted_11 = {\n class: \"setting-item\"\n};\nconst _hoisted_12 = {\n class: \"setting-label\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-header\"\n};\nconst _hoisted_19 = {\n class: \"section-title\"\n};\nconst _hoisted_20 = {\n class: \"section-content\"\n};\nconst _hoisted_21 = {\n class: \"setting-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_26 = {\n class: \"setting-label\"\n};\nconst _hoisted_27 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_28 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_30 = {\n class: \"setting-label\"\n};\nconst _hoisted_31 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_32 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_34 = {\n class: \"section-header\"\n};\nconst _hoisted_35 = {\n class: \"section-title\"\n};\nconst _hoisted_36 = {\n class: \"section-content\"\n};\nconst _hoisted_37 = {\n class: \"setting-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChannelIcon = _resolveComponent(\"ChannelIcon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('uploadSettings.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('uploadSettings.uploadChannel')), 1)]), _createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.$t('uploadSettings.channelType')), 1), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"telegram\",\n class: \"channel-icon channel-brand-telegram\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"cfr2\",\n class: \"channel-icon channel-brand-cfr2\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"s3\",\n class: \"channel-icon channel-brand-s3\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"discord\",\n class: \"channel-icon channel-brand-discord\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"huggingface\",\n class: \"channel-icon channel-brand-huggingface\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"webdav\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_ChannelIcon, {\n type: \"webdav\",\n class: \"channel-icon channel-brand-webdav\"\n }), _cache[18] || (_cache[18] = _createElementVNode(\"span\", null, \"WD\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.channelName')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.channelNameTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: _ctx.$t('uploadSettings.autoSelect'),\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\", \"placeholder\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('uploadSettings.uploadDirectory')), 1), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: _ctx.$t('uploadSettings.uploadDirectoryPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\", \"placeholder\"])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"span\", _hoisted_12, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.autoSwitch')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.autoSwitchTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('uploadSettings.fileNaming')), 1)]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingDefault')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingIndex')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingOrigin')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadSettings.namingShort')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('uploadSettings.filePreprocess')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.filePreprocessTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.convertToWebp')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.convertToWebpTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('uploadSettings.fileCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"span\", _hoisted_26, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.compressThreshold')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.compressThresholdTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_28, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[19] || (_cache[19] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createElementVNode(\"span\", _hoisted_30, [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.expectedSize')) + \" \", 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.expectedSizeTooltip'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_31, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_32, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('uploadSettings.serverCompress')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('uploadSettings.serverCompressTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, _toDisplayString(_ctx.$t('uploadSettings.enableCompress')), 1), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('uploadSettings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","import ChannelIcon from '@/components/icons/ChannelIcon.vue';\nexport default {\n name: 'UploadSettingsDialog',\n components: {\n ChannelIcon\n },\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\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 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=3eb5cfdc\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('uploadForm.copyFailed')\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=3620a174&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=3620a174&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-3620a174\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = [\"innerHTML\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_5 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_6 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_7 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_8 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_9 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\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_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n innerHTML: _ctx.$t('upload.dragUploadText')\n }, null, 10, _hoisted_3)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: _ctx.$t('upload.pasteUrlPlaceholder'),\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteUploadBtn')), 1)]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteSave')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.pasteExternal')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.retryFailed'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-retry\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.clearList'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.clearUploaded')), 1)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_9, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const fileType = file.file.type || 'application/octet-stream';\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', fileType);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error(this.$t('uploadForm.chunkInitFailed') + ': ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', fileType);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || this.$t('uploadForm.uploadError'));\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.chunkMerging'),\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', fileType);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.deleted', {\n name: this.truncateFilename(file.name)\n })\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.uploadSuccess', {\n name: this.truncateFilename(file.name)\n })\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.$t('uploadForm.uploadFailed', {\n name: this.truncateFilename(file.name)\n }));\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.fileNotUploaded')\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copySuccess')\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(this.$t('uploadForm.compressedFileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(this.$t('uploadForm.compressFailedCannotUpload', {\n name: processedFile.name\n }));\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(this.$t('uploadForm.fileTooLarge', {\n name: processedFile.name\n }));\n reject(this.$t('uploadForm.fileSizeTooLarge'));\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.copyAllSuccess')\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.fileListCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.fileListEmpty')\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: this.$t('uploadForm.successFilesCleared')\n });\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.successFilesEmpty')\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.urlRequestFailed')\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: this.$t('uploadForm.noFailedFiles')\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? this.$t('uploadForm.autoRetryOn') : this.$t('uploadForm.autoRetryOff')\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: this.$t('uploadForm.maxRetryReached', {\n name: file.name,\n max: this.maxRetryCount\n })\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error(this.$t('uploadForm.imageLoadFailed')));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=f81fd314&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=f81fd314&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-f81fd314\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-suggestion-input\",\n ref: \"wrapperRef\"\n};\nconst _hoisted_2 = {\n class: \"suggestion-dropdown\"\n};\nconst _hoisted_3 = {\n class: \"suggestion-list\"\n};\nconst _hoisted_4 = [\"title\", \"onMousedown\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_input, {\n ref: \"inputRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n placeholder: $props.placeholder,\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onInput: $options.handleInput\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onInput\"]), _withDirectives(_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"ul\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, (item, index) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: index,\n class: \"suggestion-item\",\n title: item.value,\n onMousedown: _withModifiers($event => $options.selectItem(item), [\"prevent\"])\n }, _toDisplayString(item.value), 41, _hoisted_4);\n }), 128))])], 512), [[_vShow, $data.dropdownVisible && $data.suggestions.length > 0]])], 512);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n dropdownVisible: false,\n isFocused: false,\n suggestions: []\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n watch: {\n modelValue() {\n // 外部修改 modelValue 时也刷新建议\n if (this.isFocused) {\n this.refreshSuggestions();\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n setTimeout(() => {\n if (this.isFocused) {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n }\n }, 500);\n },\n handleBlur() {\n this.isFocused = false;\n this.dropdownVisible = false;\n this.$emit('blur');\n },\n handleInput(val) {\n // val 是 el-input @input 事件传来的最新值\n this.$nextTick(() => {\n this.refreshSuggestions();\n if (this.isFocused) {\n this.dropdownVisible = true;\n }\n });\n },\n selectItem(item) {\n const path = item.value;\n this.inputValue = path;\n this.$emit('select', path);\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n this.$nextTick(() => {\n this.refreshSuggestions();\n this.dropdownVisible = true;\n this.$refs.inputRef?.focus();\n });\n } else {\n this.dropdownVisible = false;\n }\n },\n refreshSuggestions() {\n this.suggestions = this.getDirectorySuggestions(this.modelValue || '');\n },\n normalizeDirectoryPath(path) {\n if (!path) return '/';\n let normalized = path;\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized !== '/' && !normalized.endsWith('/')) normalized += '/';\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) return;\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n return parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=28b8eda7&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=28b8eda7&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-28b8eda7\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n class: \"quick-toolbar-actions\"\n};\nconst _hoisted_4 = {\n class: \"quick-toolbar-actions-inner\"\n};\nconst _hoisted_5 = {\n class: \"header\"\n};\nconst _hoisted_6 = {\n class: \"title\"\n};\nconst _hoisted_7 = {\n class: \"title-crayon-text\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-header\"\n};\nconst _hoisted_11 = {\n class: \"section-title\"\n};\nconst _hoisted_12 = {\n class: \"section-content\"\n};\nconst _hoisted_13 = {\n class: \"dialog-section\"\n};\nconst _hoisted_14 = {\n class: \"section-header\"\n};\nconst _hoisted_15 = {\n class: \"section-title\"\n};\nconst _hoisted_16 = {\n class: \"section-content\"\n};\nconst _hoisted_17 = {\n class: \"setting-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n class: \"setting-label\"\n};\nconst _hoisted_21 = {\n class: \"dialog-action\"\n};\nconst _hoisted_22 = [\"innerHTML\"];\nconst _hoisted_23 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\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_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\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_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_dropdown, {\n class: \"more-dropdown desktop-only\",\n trigger: \"click\",\n onCommand: $options.handleDesktopMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: _ctx.$t('upload.folderPlaceholder'),\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"placeholder\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('upload.switchUploadMethod'),\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"content\", \"disabled\"]), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? _ctx.$t('upload.pasteUpload') : _ctx.$t('upload.fileUpload')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.history')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.announcement')), 1)]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_dropdown_item, {\n command: \"toggleLanguage\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$i18n.locale === 'zh-CN' ? 'English' : '简体中文'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"viewDocs\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n style: {\n \"width\": \"16px\",\n \"margin-right\": \"8px\",\n \"text-align\": \"center\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('upload.viewDocs')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"quick-toolbar\", {\n 'is-expanded': $data.isQuickToolbarOpen\n }]),\n onMouseleave: _cache[5] || (_cache[5] = (...args) => $options.handleQuickToolbarLeave && $options.handleQuickToolbarLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.logout'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleQuickToolbarCommand('logout'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.manage'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleQuickToolbarCommand('manage'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip || !$data.isQuickToolbarOpen,\n content: _ctx.$t('upload.linkFormat'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleQuickToolbarCommand('linkFormat'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.settings'),\n placement: \"left\",\n \"hide-after\": 0\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"quick-toolbar-button\",\n onClick: $options.openCompressDialog\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"quick-toolbar-icon\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_button, {\n class: _normalizeClass([\"quick-toolbar-button quick-toolbar-more\", {\n 'is-active': $data.isQuickToolbarOpen\n }]),\n \"aria-expanded\": $data.isQuickToolbarOpen,\n onMouseenter: $options.handleQuickToolbarMoreEnter,\n onClick: $options.toggleQuickToolbar\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"quick-toolbar-icon quick-toolbar-toggle-icon\"\n })]),\n _: 1\n }, 8, [\"class\", \"aria-expanded\", \"onMouseenter\", \"onClick\"])], 34), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h1\", _hoisted_6, [_createElementVNode(\"span\", _hoisted_7, _toDisplayString($options.ownerName) + \" ImgHub\", 1), _createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub \", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('settings.linkFormatTitle'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_21, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[9] || (_cache[9] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[12] || (_cache[12] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[13] || (_cache[13] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[14] || (_cache[14] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[15] || (_cache[15] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[16] || (_cache[16] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[17] || (_cache[17] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[18] || (_cache[18] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[19] || (_cache[19] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[20] || (_cache[20] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[21] || (_cache[21] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: _ctx.$t('upload.announcementTitle'),\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_23, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.acknowledgeAnnouncement\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('upload.announcementAck')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_22)]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[23] || (_cache[23] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { setLocale } from '@/locales';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n isQuickToolbarOpen: false,\n isQuickToolbarPinned: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n displayedAnnouncementRefreshAt: null,\n // 当前弹窗所展示的公告版本\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', true, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n this.showAnnouncementIfNeeded();\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n this.$message.error(result.error);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n axios.post('/api/auth/logout', {\n authType: 'user'\n }, {\n withCredentials: true\n }).finally(() => {\n this.$store.commit('setUserLoggedIn', false);\n this.$router.push('/login');\n this.$message.success(this.$t('upload.logoutSuccess'));\n });\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleQuickToolbarMoreEnter() {\n this.isQuickToolbarOpen = true;\n },\n handleQuickToolbarLeave() {\n if (!this.isQuickToolbarPinned) {\n this.isQuickToolbarOpen = false;\n }\n },\n toggleQuickToolbar() {\n this.isQuickToolbarPinned = !this.isQuickToolbarPinned;\n this.isQuickToolbarOpen = this.isQuickToolbarPinned;\n },\n closeQuickToolbar() {\n this.isQuickToolbarPinned = false;\n this.isQuickToolbarOpen = false;\n },\n handleQuickToolbarCommand(command) {\n this.closeQuickToolbar();\n if (command === 'linkFormat') {\n this.openUrlDialog();\n } else if (command === 'manage') {\n this.handleManage();\n } else if (command === 'logout') {\n this.handleLogout();\n }\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n handleDesktopMenuCommand(command) {\n if (command === 'viewDocs') {\n window.open('https://cfbed.sanyue.de/qa/', '_blank');\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n } else if (command === 'toggleLanguage') {\n const next = this.$i18n.locale === 'zh-CN' ? 'en' : 'zh-CN';\n setLocale(next);\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return this.$t('theme.lightMode');\n if (this.themeMode === 'light') return this.$t('theme.darkMode');\n return this.$t('theme.autoMode');\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.openAnnouncement(announcement);\n } else {\n this.$message.info(this.$t('upload.noAnnouncement'));\n }\n },\n getAnnouncementRefreshAt() {\n const refreshAt = Number(this.userConfig?.announcementRefreshAt);\n return Number.isFinite(refreshAt) && refreshAt > 0 ? refreshAt : null;\n },\n openAnnouncement(announcement) {\n this.announcementContent = announcement;\n this.displayedAnnouncementRefreshAt = this.getAnnouncementRefreshAt();\n this.showAnnouncementDialog = true;\n },\n showAnnouncementIfNeeded() {\n const announcement = this.userConfig?.announcement;\n if (!announcement) return;\n const refreshAt = this.getAnnouncementRefreshAt();\n if (refreshAt) {\n const acknowledgedRefreshAt = Number(localStorage.getItem('announcementAcknowledgedRefreshAt'));\n if (!Number.isFinite(acknowledgedRefreshAt) || refreshAt > acknowledgedRefreshAt) {\n this.openAnnouncement(announcement);\n }\n return;\n }\n\n // 尚未产生刷新时间的旧公告在升级后再展示一次,确认后使用新版时间标记。\n if (!localStorage.getItem('announcementAcknowledgedAt')) {\n this.openAnnouncement(announcement);\n }\n },\n acknowledgeAnnouncement() {\n localStorage.setItem('announcementAcknowledgedAt', String(Date.now()));\n if (this.displayedAnnouncementRefreshAt) {\n localStorage.setItem('announcementAcknowledgedRefreshAt', String(this.displayedAnnouncementRefreshAt));\n }\n this.showAnnouncementDialog = false;\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=579106c0&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=579106c0&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-579106c0\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, mergeProps as _mergeProps, createStaticVNode as _createStaticVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_2 = {\n key: 1,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nconst _hoisted_3 = {\n key: 2,\n class: \"channel-svg-icon\",\n viewBox: \"0 0 1024 1024\",\n xmlns: \"http://www.w3.org/2000/svg\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", _mergeProps(_ctx.$attrs, {\n class: \"channel-icon-wrapper\"\n }), [$props.type === 'telegram' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_1, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"path\", {\n d: \"M417.28 795.733333 429.226667 615.253333 756.906667 320C771.413333 306.773333 753.92 300.373333 734.72 311.893333L330.24 567.466667 155.306667 512C117.76 501.333333 117.333333 475.306667 163.84 456.533333L845.226667 193.706667C876.373333 179.626667 906.24 201.386667 894.293333 249.173333L778.24 795.733333C770.133333 834.56 746.666667 843.946667 714.24 826.026667L537.6 695.466667 452.693333 777.813333C442.88 787.626667 434.773333 795.733333 417.28 795.733333Z\"\n }, null, -1)]))])) : $props.type === 'huggingface' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_2, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"\", 9)]))])) : $props.type === 'webdav' ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_3, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"path\", {\n d: \"M446.293333 810.666667C384 898.986667 262.4 921.173333 174.506667 859.733333c-87.466667-61.44-107.946667-183.893333-46.506667-273.066666a195.626667 195.626667 0 0 1 152.746667-84.48l2.133333 61.013333c-38.826667 2.986667-76.373333 23.04-100.693333 58.026667-42.666667 61.44-29.44 144.213333 29.013333 185.6 58.88 40.96 141.226667 25.173333 183.893333-35.84 13.226667-19.2 20.906667-40.106667 23.893334-61.44v-43.093334l238.08-1.706666 2.986666-4.693334c22.613333-39.253333 71.68-52.906667 110.08-30.72a81.066667 81.066667 0 0 1 29.013334 110.933334c-22.613333 38.826667-72.106667 52.48-110.506667 30.293333-17.493333-9.813333-29.866667-25.6-35.413333-43.52l-173.653334 0.853333a211.626667 211.626667 0 0 1-33.28 82.773334m310.613334-304.64c107.946667 13.226667 184.746667 110.08 171.52 216.32-13.226667 106.666667-111.36 182.186667-219.306667 168.96a197.504 197.504 0 0 1-146.346667-94.293334l52.906667-30.72a137.386667 137.386667 0 0 0 98.986667 61.866667c74.666667 8.96 140.8-41.813333 149.76-113.066667 8.96-71.253333-43.946667-136.533333-117.76-145.493333-23.04-2.56-45.226667 0.426667-65.28 7.68l-36.266667 18.773333-110.08-203.52h-9.386667a81.322667 81.322667 0 0 1-78.933333-83.2c1.28-44.373333 39.68-78.933333 84.48-77.226666 44.8 2.56 80.213333 38.826667 78.933333 83.2-0.853333 18.773333-8.106667 35.84-19.626666 49.066666l81.066666 149.76c26.453333-8.533333 55.466667-11.52 85.333334-8.106666M352 389.973333c-42.666667-100.266667 2.56-215.04 101.12-256.853333 98.986667-41.813333 213.333333 5.546667 256 105.813333 25.173333 58.453333 20.053333 122.453333-8.533333 173.653334l-52.906667-30.72c17.92-34.56 20.906667-76.8 3.84-116.48-29.013333-68.266667-106.24-101.12-172.373333-73.386667-66.56 28.16-96.426667 106.666667-67.413334 174.933333 11.946667 28.16 32 49.92 56.32 64.426667l16.64 8.96-130.986666 212.906667c1.28 2.133333 2.986667 4.693333 4.266666 8.106666 20.906667 38.826667 6.4 87.893333-32.853333 108.8-38.826667 20.906667-87.893333 5.546667-109.226667-34.56-20.906667-39.68-6.4-88.746667 32.853334-109.653333 16.64-8.96 34.986667-11.093333 52.48-7.253333l98.56-160.853334c-20.053333-18.346667-37.12-41.386667-47.786667-67.84z\"\n }, null, -1)]))])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: $options.fontAwesomeIcon\n }, null, 8, [\"icon\"]))], 16);\n}","export default {\n name: 'ChannelIcon',\n inheritAttrs: false,\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n fontAwesomeIcon() {\n const icons = {\n cfr2: ['fab', 'cloudflare'],\n s3: ['fab', 'aws'],\n discord: ['fab', 'discord']\n };\n return icons[this.type] || 'server';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ChannelIcon.vue?vue&type=template&id=33933ada&scoped=true\"\nimport script from \"./ChannelIcon.vue?vue&type=script&lang=js\"\nexport * from \"./ChannelIcon.vue?vue&type=script&lang=js\"\n\nimport \"./ChannelIcon.vue?vue&type=style&index=0&id=33933ada&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-33933ada\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"page-footer\"\n};\nconst _hoisted_2 = [\"href\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return !$options.disableFooter ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"p\", null, [_createTextVNode(\"© 2024-\" + _toDisplayString($options.thisYear) + \" Designed by \", 1), _cache[0] || (_cache[0] = _createElementVNode(\"a\", {\n class: \"footer-name\",\n href: \"https://github.com/MarSeventh\",\n target: \"_blank\"\n }, \"SanyueQi\", -1)), _cache[1] || (_cache[1] = _createTextVNode(\" for You! \", -1)), _createElementVNode(\"a\", {\n href: $options.footerLink,\n target: \"_blank\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"footer-link-icon\"\n })], 8, _hoisted_2)])])) : _createCommentVNode(\"\", true);\n}","import { mapGetters } from 'vuex';\nexport default {\n name: 'Footer',\n computed: {\n ...mapGetters(['userConfig']),\n footerLink() {\n return this.userConfig?.footerLink || 'https://github.com/MarSeventh';\n },\n thisYear() {\n return new Date().getFullYear();\n },\n disableFooter() {\n return this.userConfig?.disableFooter || false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Footer.vue?vue&type=template&id=08acbaa9&scoped=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=js\"\nexport * from \"./Footer.vue?vue&type=script&lang=js\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=08acbaa9&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-08acbaa9\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMask\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.5em\",\n height: \"1.5em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMask)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.5em\",\n \"color\": \"var(--theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./ToggleDark.vue?vue&type=template&id=66e6a1f0&scoped=true\"\nimport script from \"./ToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleDark.vue?vue&type=style&index=0&id=66e6a1f0&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-66e6a1f0\"]])\n\nexport default __exports__"],"names":["_hoisted_1","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","href","logoHref","target","class","logo","link","logoClasses","alt","src","logoUrl","name","props","type","String","default","validator","value","includes","customSrc","position","size","enableHover","Boolean","useConfigLink","computed","this","userConfig","logoLink","__exports__","t","e","module","exports","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","Image","onload","onerror","Error","document","createElement","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","accuracy","filter","sort","abs","pow","v","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","key","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_font_awesome_icon","_component_el_button","_component_el_tooltip","show","$t","count","totalCount","content","placement","circle","onClick","toggleViewMode","icon","viewMode","_","clearHistory","$event","$emit","historyList","ref","onScroll","args","handleScroll","groupedHistory","group","date","items","item","time","isImage","url","loading","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","title","formatTime","hasMore","loadingMore","spin","data","allHistory","pageSize","currentPage","watch","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","push","keys","map","mounted","savedMode","localStorage","getItem","methods","loadAllHistory","loadMore","history","JSON","parse","console","error","setTimeout","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_component_ChannelIcon","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","modelValue","visible","dialogWidth","uploadChannel","label","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","components","ChannelIcon","startsWith","Array","emits","set","innerWidth","style","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","status","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","$refs","scrollContainer","setScrollTop","deep","immediate","$store","commit","location","protocol","host","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","response","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","undefined","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","opacity","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","path","normalizedPath","normalizeDirectoryPath","children","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","node","parentPath","isArray","child","tree","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","queryString","parentChildren","keyword","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","trigger","onCommand","handleDesktopMenuCommand","command","announcementAvailable","$i18n","locale","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","onSelect","handleDirectorySelect","source","handleChangeUploadMethod","handleMobileMenuCommand","getThemeIcon","getThemeText","isQuickToolbarOpen","handleQuickToolbarLeave","handleQuickToolbarCommand","openCompressDialog","onMouseenter","handleQuickToolbarMoreEnter","toggleQuickToolbar","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","acknowledgeAnnouncement","announcementContent","showHistory","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","isQuickToolbarPinned","displayedAnnouncementRefreshAt","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","useDarkMode","showAnnouncementIfNeeded","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","handleManage","$router","defaultValue","num","parseFloat","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","popoverVisible","transition","reference","$slots","fetchDirectoryTree","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","expanded","openDrawer","drawerVisible","direction","windowWidth","newVal","treeRef","store","nodesMap","treeRefMobile","setCurrentKey","handleResize","fetchWithAuth","json","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","oldVal","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","getElementById","id","textContent","head","existingStyle","remove","createBackgroundElements","bg1","className","bg2","insertBefore","firstChild","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","bingWallPapers","loadBackgroundImage","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","zoomDuration","transformOrigin","computedStyle","getComputedStyle","isolation","isBg1Current","curBg","nextBg","nextUrl","clearBackgroundInterval","reinitializeBackground","currentBg","newThemeImage","preloadImg","viewBox","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","handleToggleClick","mode","isAuto","stroke","cx","cy","mask","x1","y1","x2","y2"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/870.9e7db652.js.map.gz b/frontend-dist/js/870.9e7db652.js.map.gz deleted file mode 100644 index 32b88177..00000000 Binary files a/frontend-dist/js/870.9e7db652.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/903.808d69b5.js b/frontend-dist/js/903.808d69b5.js new file mode 100644 index 00000000..f0090dcd --- /dev/null +++ b/frontend-dist/js/903.808d69b5.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[903],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15616:function(e,t,a){"use strict";a(85331),a(97197)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,$=n.pw,L=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)($,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,$=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!w&&!_||(x|=2048);var D=0,E=0;S&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(E=20,D|=function(e){return 63&(e||0)}(f.dosPermissions)),h=$.getUTCHours(),h<<=6,h|=$.getUTCMinutes(),h<<=5,h|=$.getUTCSeconds()/2,u=$.getUTCFullYear()-1980,u<<=4,u|=$.getUTCMonth()+1,u<<=5,u|=$.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(L.crc32,4),A+=i(L.compressedSize,4),A+=i(L.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,$=113,L=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function 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,U(e.strm)}function B(e,t){e.pending_buf[e.pending++]=t}function W(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return L;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,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===c?(P(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new V(4,4,8,4,M),new V(4,5,16,8,M),new V(4,6,32,32,M),new V(4,4,16,16,N),new V(8,16,32,32,N),new V(8,16,128,128,N),new V(8,32,128,256,N),new V(32,128,258,1024,N),new V(32,258,258,4096,N)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),B(n,n.gzhead.time>>16&255),B(n,n.gzhead.time>>24&255),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(B(n,255&n.gzhead.extra.length),B(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):(B(n,0),B(n,0),B(n,0),B(n,0),B(n,0),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,3),n.status=$);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=$,W(n,f),0!==n.strstart&&(W(n,e.adler>>>16),W(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)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)B(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)),U(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)),U(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&&U(e),n.pending+2<=n.pending_buf_size&&(B(n,255&e.adler),B(n,e.adler>>8&255),e.adler=0,n.status=$)):n.status=$),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return L;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===L||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(B(n,255&e.adler),B(n,e.adler>>8&255),B(n,e.adler>>16&255),B(n,e.adler>>24&255),B(n,255&e.total_in),B(n,e.total_in>>8&255),B(n,e.total_in>>16&255),B(n,e.total_in>>24&255)):(W(n,e.adler>>>16),W(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,U)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;U=f[g+S++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[M[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,B={bits:a.lenbits},P=o(0,a.lens,0,19,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=x,w-=x,a.lens[a.have++]=E;else{if(16===E){for(W=x+2;w>>=x,w-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===E){for(W=x+3;w>>=x)),y>>>=3,w-=3}else{for(W=x+7;w>>=x)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,B={bits:a.lenbits},P=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,B={bits:a.distbits},P=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,B),a.distbits=B.bits,P){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}$=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),L=a.window}else L=m,$=b-a.offset,S=a.length;for(kv?(y=B[W+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===S)break;F=t[a+h[C]]}if($>>7)]}function B(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function W(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function M(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function N(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(W(e,2+(i?1:0),3),K(e,T,S)):(W(e,4+(i?1:0),3),function(e,t,a,i){var n;for(W(e,t-257,5),W(e,a-1,5),W(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(L[a]+d+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){W(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(B(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;iA.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(P,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",$,(0,h.v_)(E.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(W,{key:1,ref:"treeRef",data:E.treeData,props:E.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",L,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,E.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var U=z,P=a(45130);const B={class:"mobile-drawer-header"},W={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},O=["onClick"];function M(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",B,[(0,c.Lk)("span",W,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var N={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(N,[["render",M],["__scopeId","data-v-3b79a1b6"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(H,[["render",G],["__scopeId","data-v-efef5a4c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701);var ye=a(51219),we=a(12933),_e={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){we.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(_e,[["render",ke],["__scopeId","data-v-0d04afa1"]]);var Ce=Fe,Te=a(813);a(34896);const Se={class:"tag-management-container"},$e={class:"input-section"},Le={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Pe={key:2,class:"empty-message"},Be={class:"dialog-footer"};function We(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",Be,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",Se,[(0,c.Lk)("div",$e,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Pe,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Me=(0,I.A)(Oe,[["render",We],["__scopeId","data-v-24c809e4"]]);var Ne=Me,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#59636E"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#59636E"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,w=je.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ge,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",He,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,P.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-38a97614"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(P.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-6de9da06"]]);var kt=vt,yt=a(54880),wt=(a(4318),a(77815));a(72907);const _t=["aria-checked"];function Ft(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[a.checked?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"dashboard-checkbox-mark"})):a.indeterminate?((0,c.uX)(),(0,c.Wv)(r,{key:1,icon:"minus",class:"dashboard-checkbox-mark"})):(0,c.Q3)("",!0)],42,_t)}var Ct={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"list",validator:e=>["list","breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}},methods:{handleClick(e){this.$emit("click",e)}}};const Tt=(0,I.A)(Ct,[["render",Ft],["__scopeId","data-v-f8222714"]]);var St=Tt;const $t={class:"list-col list-col-checkbox"},Lt=["src"],xt=["src"],Dt=["title"],Et={class:"filename-start"},At={class:"filename-end"},It={class:"list-col list-col-tags"},zt={key:1,class:"list-empty"},Ut={class:"list-col list-col-channel"},Pt={class:"list-col list-col-channel-name"},Bt={key:0,class:"channel-name-box"},Wt={key:1,class:"list-empty"},Rt={class:"list-col list-col-address"},Ot={key:0,class:"address-box"},Mt={key:1,class:"list-empty"},Nt={class:"list-col list-col-size"},Vt={class:"list-col list-col-date"},Xt={class:"list-col list-col-actions"};function jt(e,t,a,i,n,s){const r=St,o=(0,c.g2)("font-awesome-icon"),l=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[8]||(t[8]=t=>e.$emit("touchstart",t)),onTouchend:t[9]||(t[9]=t=>e.$emit("touchend",t)),onTouchmove:t[10]||(t[10]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",$t,[(0,c.bF)(r,{checked:n.localSelected,onClick:(0,P.D$)(s.toggleSelect,["stop"])},null,8,["checked","onClick"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[0]||(t[0]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,xt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",Et,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",At,(0,h.v_)(s.fileNameEnd),1)],8,Dt)]),(0,c.Lk)("div",It,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",zt,"-"))]),(0,c.Lk)("div",Ut,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Pt,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Bt,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Wt,"-"))]),(0,c.Lk)("div",Rt,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",Ot,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Mt,"-"))]),(0,c.Lk)("div",Nt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Vt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Xt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[2]||(t[2]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[7]||(t[7]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Kt={name:"FileListItem",components:{DashboardCheckbox:St},props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Zt=(0,I.A)(Kt,[["render",jt],["__scopeId","data-v-4b029ac8"]]);var Gt=Zt,Ht=a(70683),qt=(a(95385),a(98469));a(38736);const Qt={class:"file-short-info"},Yt={key:0,class:"success-tag"},Jt={key:1,class:"fail-tag"},ea={key:2,class:"success-tag"},ta={key:3,class:"primary-tag"},aa={key:0,style:{"margin-left":"2px"}},ia={key:0,class:"skeleton-wrapper"},na={class:"error-text"},sa=["src"],ra={class:"error-text"},oa={key:3,class:"file-preview"},la={class:"card-bottom-overlay"},da={class:"file-name-row"},ca={class:"file-name"},ha={class:"action-bar"},ua={class:"action-bar-left"},fa={class:"action-bar-right"};function ma(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Qt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Yt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Jt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",ea,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",ta,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",aa," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",ia)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",na,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,sa),[[P.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ra,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",oa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",la,[(0,c.Lk)("div",da,[(0,c.Lk)("span",ca,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ha,[(0,c.Lk)("div",ua,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",fa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var pa={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ga=(0,I.A)(pa,[["render",ma],["__scopeId","data-v-12b39bad"]]);var ba=ga;const va={class:"card-bottom-overlay"},ka={class:"file-name-row"},ya={class:"file-name"},wa={key:0,class:"action-bar"},_a={class:"action-bar-right"};function Fa(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",va,[(0,c.Lk)("div",ka,[(0,c.Lk)("span",ya,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",wa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",_a,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Ca={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 Ta=(0,I.A)(Ca,[["render",Fa],["__scopeId","data-v-e3ec6a12"]]);var Sa=Ta;function $a(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var La={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const xa=(0,I.A)(La,[["render",$a],["__scopeId","data-v-070880ec"]]);var Da=xa,Ea=a(81095),Aa=(a(77128),a(62086)),Ia=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const za={class:"el-dropdown-link filter-trigger"},Ua={class:"filter-section"},Pa={class:"filter-title"},Ba={class:"filter-options"},Wa={class:"filter-section"},Ra={class:"filter-title"},Oa={class:"filter-options"},Ma={class:"filter-section"},Na={class:"filter-title"},Va={class:"filter-options"},Xa={class:"filter-section"},ja={class:"filter-title"},Ka={class:"filter-options"},Za={class:"filter-section"},Ga={class:"filter-title"},Ha={class:"filter-options"},qa={key:0,class:"filter-section"},Qa={class:"filter-title"},Ya={class:"filter-options"},Ja={key:0,class:"channel-divider"},ei={class:"channel-group-title"},ti={class:"filter-actions"};function ai(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Ia.z_,d=qt.dI,u=qt.o5,f=l.S2,m=Aa.Iy,p=Aa.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ua,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Ba,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Wa,[(0,c.Lk)("div",Ra,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Oa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ma,[(0,c.Lk)("div",Na,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Va,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Xa,[(0,c.Lk)("div",ja,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Ka,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Za,[(0,c.Lk)("div",Ga,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ha,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",qa,[(0,c.Lk)("div",Qa,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ya,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ja)):(0,c.Q3)("",!0),(0,c.Lk)("div",ei,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",ti,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",za,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const ni=(0,I.A)(ii,[["render",ai],["__scopeId","data-v-e6a38b20"]]);var si=ni,ri=a(91570);const oi={class:"container"},li={class:"header-content"},di={class:"search-area"},ci={class:"search-card"},hi={class:"actions"},ui={class:"el-dropdown-link"},fi={class:"el-dropdown-link"},mi={class:"breadcrumb-container"},pi={class:"breadcrumb-view-toggle",role:"group"},gi=["title","aria-pressed"],bi=["title","aria-pressed"],vi={class:"mobile-directory-path"},ki={class:"breadcrumb desktop-only"},yi=["title"],wi={key:1,class:"empty-state"},_i={class:"empty-text"},Fi={class:"empty-hint"},Ci={class:"list-header"},Ti={class:"list-col list-col-checkbox"},Si={class:"list-col list-col-preview"},$i={class:"list-col list-col-name"},Li={class:"list-col list-col-tags"},xi={class:"list-col list-col-channel"},Di={class:"list-col list-col-channel-name"},Ei={class:"list-col list-col-address"},Ai={class:"list-col list-col-size"},Ii={class:"list-col list-col-date"},zi={class:"list-col list-col-actions"},Ui={key:1,class:"empty-state list-empty"},Pi={class:"empty-text"},Bi={class:"empty-hint"},Wi={class:"pagination-container"},Ri={class:"pagination-center"},Oi={class:"pagination-right"},Mi={class:"page-total"},Ni={class:"page-jump"},Vi={class:"dialog-section"},Xi={class:"section-header"},ji={class:"section-title"},Ki={class:"section-content"},Zi={class:"dialog-section"},Gi={class:"section-header"},Hi={class:"section-title"},qi={class:"section-content"},Qi={class:"setting-item"},Yi={class:"setting-label"},Ji={key:0,class:"setting-item"},en={class:"setting-label"},tn={class:"dialog-action"};function an(e,t,a,i,n,s){const o=ri.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=si,p=Aa.c6,g=Aa.Iy,b=Aa.dW,v=ht.R7,k=yt.bZ,y=St,w=Ea.WZ,_=Ea.vp,F=Da,C=Sa,T=ba,S=Gt,$=wt.aQ,L=l.S2,x=yt.ZO,D=yt.lX,E=kt,A=ct,I=Xe.ll,z=Xe.MQ,B=Ve.qi,W=r.kZ,R=Ne,O=Ce,M=Q,N=X,V=U;return(0,c.uX)(),(0,c.CE)("div",oi,[(0,c.bF)(D,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",li,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",di,[(0,c.Lk)("div",ci,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,P.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",hi,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",ui,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",fi,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(x,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",mi,[(0,c.bF)(y,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",pi,[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,gi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,bi)]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[5]||(t[5]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",vi,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",ki,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(w,{onClick:t[6]||(t[6]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(w,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,yi)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[7]||(t[7]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[9]||(t[9]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",wi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",_i,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Fi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(T,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[11]||(t[11]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[13]||(t[13]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Ci,[(0,c.Lk)("div",Ti,[(0,c.bF)(y,{checked:s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[10]||(t[10]=e=>s.handleSelectAllPage(!s.isSelectAll))},null,8,["checked","indeterminate"])]),(0,c.Lk)("div",Si,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",Li,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",xi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Di,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Ei,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ai,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ii,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",zi,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Ui,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Pi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Bi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(S,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Wi,[(0,c.Lk)("div",Ri,[(0,c.bF)($,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(L,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(L,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Mi,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ni,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[14]||(t[14]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,P.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[31]||(t[31]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(E,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(A,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[15]||(t[15]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[16]||(t[16]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[17]||(t[17]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[18]||(t[18]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[19]||(t[19]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[20]||(t[20]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[25]||(t[25]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Vi,[(0,c.Lk)("div",Xi,[(0,c.Lk)("span",ji,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Ki,[(0,c.bF)(z,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[21]||(t[21]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(I,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(I,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[32]||(t[32]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(I,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[33]||(t[33]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(I,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[34]||(t[34]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(I,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[35]||(t[35]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(I,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Zi,[(0,c.Lk)("div",Gi,[(0,c.Lk)("span",Hi,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",qi,[(0,c.Lk)("div",Qi,[(0,c.Lk)("span",Yi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(B,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[22]||(t[22]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",Ji,[(0,c.Lk)("span",en,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[23]||(t[23]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",tn,[(0,c.bF)(L,{type:"primary",onClick:t[24]||(t[24]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(R,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(M,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(V,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var nn=a(60782),sn=a(44813),rn=a.n(sn),on=a(54047),ln=a(46638);class dn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ye.nk.warning(ln.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(ln.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,E.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const cn=new dn;var hn=a(62388),un=a(48903),fn=a(90144);function mn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function pn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function gn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,fn.KR)(!1),r=(0,fn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,fn.BA)(i);return t[e]||void 0}function v(){const e=(0,fn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,fn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,fn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=pn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),L())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function $(){document.body.style.userSelect=g}function L(){const e=b();if(!e)return;const t=(0,fn.BA)(e.containerRef);if(!t)return;const a=(0,fn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=mn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,fn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=pn(o,o),S(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=pn(o,t),L();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(e){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function U(){k()}return(0,c.wB)(()=>(0,fn.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),$(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}var bn={name:"AdminDashBoard",mixins:[un.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:ri.A,TagManagementDialog:Ne,BatchTagDialog:Ce,SkeletonLoader:Da,FileCard:ba,FolderCard:Sa,FileListItem:Gt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,DashboardCheckbox:St,FilterDropdown:si,MoveFileDialog:U,LanguageSwitcher:on.A},setup(){const e=(0,fn.KR)(null),t=(0,fn.KR)(null),a=(0,fn.KR)("card"),i=(0,fn.KR)([]),{isDragging:n,selectionRect:s}=gn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,nn.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},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:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,E.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),cn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,E.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),cn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,hn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,E.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();cn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,E.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();cn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(rn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=cn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await cn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const vn=(0,I.A)(bn,[["render",an],["__scopeId","data-v-57eabdee"]]);var kn=vn},49187:function(e,t,a){"use strict";a(85331),a(38736)},62388:function(e,t,a){"use strict";a.d(t,{G:function(){return n}});var i=a(46638);function n(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:i.Ay.global.t("validation.pathMustStartWithSlash")};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:i.Ay.global.t("validation.pathTraversalNotAllowed")};const a=t?/\/\.(\/|$)/:/\/\.\//;if(a.test(e))return{valid:!1,error:i.Ay.global.t("validation.singleDotNotAllowed")};if(e.includes("//"))return{valid:!1,error:i.Ay.global.t("validation.consecutiveSlashNotAllowed")};const n=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); +//# sourceMappingURL=903.808d69b5.js.map \ No newline at end of file diff --git a/frontend-dist/js/903.808d69b5.js.gz b/frontend-dist/js/903.808d69b5.js.gz new file mode 100644 index 00000000..3408e9d3 Binary files /dev/null and b/frontend-dist/js/903.808d69b5.js.gz differ diff --git a/frontend-dist/js/903.808d69b5.js.map b/frontend-dist/js/903.808d69b5.js.map new file mode 100644 index 00000000..beb43b0f --- /dev/null +++ b/frontend-dist/js/903.808d69b5.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/903.808d69b5.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?540f","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?66ed","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?f98e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?6b85","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8326","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?0608","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?e516","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?fd3e","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?ff7f","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?8cbb","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?c47a","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?005a","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?eb45","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2","webpack://sanyue_imghub/./src/utils/pathValidator.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=3b79a1b6&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=3b79a1b6&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-3b79a1b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=efef5a4c&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=efef5a4c&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-efef5a4c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=0d04afa1&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=0d04afa1&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-0d04afa1\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=24c809e4&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=24c809e4&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-24c809e4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=38a97614&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=38a97614&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-38a97614\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=6de9da06&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=6de9da06&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-6de9da06\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [$props.checked ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"dashboard-checkbox-mark\"\n })) : $props.indeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"dashboard-checkbox-mark\"\n })) : _createCommentVNode(\"\", true)], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'list',\n validator: value => ['list', 'breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=f8222714&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=f8222714&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-f8222714\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\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[8] || (_cache[8] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[9] || (_cache[9] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_DashboardCheckbox, {\n checked: $data.localSelected,\n onClick: _withModifiers($options.toggleSelect, [\"stop\"])\n }, null, 8, [\"checked\", \"onClick\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[0] || (_cache[0] = (...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[1] || (_cache[1] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[2] || (_cache[2] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nexport default {\n name: 'FileListItem',\n components: {\n DashboardCheckbox\n },\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=4b029ac8&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=4b029ac8&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-4b029ac8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=12b39bad&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=12b39bad&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-12b39bad\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=e3ec6a12&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=e3ec6a12&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-e3ec6a12\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return $props.type === 'card' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 0\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'skeleton-' + i,\n class: \"skeleton-card\"\n }, [...(_cache[0] || (_cache[0] = [_createElementVNode(\"div\", {\n class: \"skeleton-image\"\n }, null, -1), _createElementVNode(\"div\", {\n class: \"skeleton-info\"\n }, [_createElementVNode(\"div\", {\n class: \"skeleton-text\"\n })], -1)]))]);\n }), 128)) : $props.type === 'list' ? (_openBlock(true), _createElementBlock(_Fragment, {\n key: 1\n }, _renderList($props.count, i => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: 'list-skeleton-' + i,\n class: \"list-item skeleton-list-item\"\n }, [...(_cache[1] || (_cache[1] = [_createStaticVNode(\"
\", 10)]))]);\n }), 128)) : _createCommentVNode(\"\", true);\n}","export default {\n name: 'SkeletonLoader',\n props: {\n type: {\n type: String,\n default: 'card',\n validator: value => ['card', 'list'].includes(value)\n },\n count: {\n type: Number,\n default: 15\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./SkeletonLoader.vue?vue&type=template&id=070880ec&scoped=true\"\nimport script from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\nexport * from \"./SkeletonLoader.vue?vue&type=script&lang=js\"\n\nimport \"./SkeletonLoader.vue?vue&type=style&index=0&id=070880ec&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-070880ec\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=e6a38b20&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=e6a38b20&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-e6a38b20\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-view-toggle\",\n role: \"group\"\n};\nconst _hoisted_10 = [\"title\", \"aria-pressed\"];\nconst _hoisted_11 = [\"title\", \"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_13 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_14 = [\"title\"];\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_16 = {\n class: \"empty-text\"\n};\nconst _hoisted_17 = {\n class: \"empty-hint\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_30 = {\n class: \"empty-text\"\n};\nconst _hoisted_31 = {\n class: \"empty-hint\"\n};\nconst _hoisted_32 = {\n class: \"pagination-container\"\n};\nconst _hoisted_33 = {\n class: \"pagination-center\"\n};\nconst _hoisted_34 = {\n class: \"pagination-right\"\n};\nconst _hoisted_35 = {\n class: \"page-total\"\n};\nconst _hoisted_36 = {\n class: \"page-jump\"\n};\nconst _hoisted_37 = {\n class: \"dialog-section\"\n};\nconst _hoisted_38 = {\n class: \"section-header\"\n};\nconst _hoisted_39 = {\n class: \"section-title\"\n};\nconst _hoisted_40 = {\n class: \"section-content\"\n};\nconst _hoisted_41 = {\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-title\"\n};\nconst _hoisted_44 = {\n class: \"section-content\"\n};\nconst _hoisted_45 = {\n class: \"setting-item\"\n};\nconst _hoisted_46 = {\n class: \"setting-label\"\n};\nconst _hoisted_47 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_48 = {\n class: \"setting-label\"\n};\nconst _hoisted_49 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_11)]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[5] || (_cache[5] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[6] || (_cache[6] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_14)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[7] || (_cache[7] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[9] || (_cache[9] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_17, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[11] || (_cache[11] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[13] || (_cache[13] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[10] || (_cache[10] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, null, 8, [\"checked\", \"indeterminate\"])]), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_26, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_30, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_31, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $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[31] || (_cache[31] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[16] || (_cache[16] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[17] || (_cache[17] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[18] || (_cache[18] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[19] || (_cache[19] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[20] || (_cache[20] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[32] || (_cache[32] = _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[33] || (_cache[33] = _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[34] || (_cache[34] = _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[35] || (_cache[35] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_49, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[24] || (_cache[24] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $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[27] || (_cache[27] = $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[28] || (_cache[28] = $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[29] || (_cache[29] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortOption: 'dateDesc',\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=57eabdee&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=57eabdee&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-57eabdee\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\nimport i18n from '@/locales'\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.pathMustStartWithSlash') \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.pathTraversalNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: i18n.global.t('validation.singleDotNotAllowed')\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.consecutiveSlashNotAllowed') \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","e","module","exports","s","a","o","h","u","r","t","l","n","Error","code","i","call","length","d","c","p","encode","f","getTypeOf","charCodeAt","push","charAt","join","decode","substr","replace","uint8array","Uint8Array","Array","indexOf","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","file","O","utf8encode","I","m","g","b","v","y","w","k","x","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","generatedError","lock","generateWorker","platform","forEach","options","_compressWorker","arguments","files","Object","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","from","allocBuffer","alloc","fill","isBuffer","Date","toUpperCase","parseInt","slice","substring","lastIndexOf","toString","filter","test","folder","remove","generate","generateInternalStream","mimeType","toLowerCase","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","index","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","max","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","Math","min","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","concat","apply","set","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","blob","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","buffer","byteLength","split","pop","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","target","result","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","async","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","port1","onmessage","port2","postMessage","global","TypeError","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","finally","constructor","catch","race","immediate","assign","chunkSize","windowBits","memLevel","strategy","to","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","text","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","last","havedict","flags","check","total","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","val","close","active","currentPath","navigate","pathParts","style","paddingLeft","goBack","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","required","debounceTimer","selectedFilesOnly","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","allTags","tags","every","clearTimeout","trim","fetchSuggestions","prefix","warning","splice","headers","body","JSON","stringify","success","updated","confirm","confirmButtonText","cancelButtonText","executeClearTags","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","fileType","endsWith","TimeStamp","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","video","paused","play","select","navigator","clipboard","writeText","open","oldFileId","_component_el_tooltip","selectedCount","disableTooltip","content","handleClear","actions","command","className","Number","variant","checked","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","event","_component_DashboardCheckbox","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","DashboardCheckbox","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","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","handler","newFilters","isArray","deep","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","showMobileDirectoryDrawer","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","newFolder","removeFile","removeFolder","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","useDragSelect","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","fullList","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","localeCompare","link","href","download","click","tab","$message","$confirm","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","clip","execCommand","fetchFileList","num","init","videoElement","fetch","credentials","authType","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","zip","fileNameCount","downloadPromises","extension","baseName","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","fileItems","totalCount","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","validateFolderPath","strict","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/903.808d69b5.js.map.gz b/frontend-dist/js/903.808d69b5.js.map.gz new file mode 100644 index 00000000..e671ef5b Binary files /dev/null and b/frontend-dist/js/903.808d69b5.js.map.gz differ diff --git a/frontend-dist/js/957.e8a16dfc.js b/frontend-dist/js/957.e8a16dfc.js deleted file mode 100644 index 78e400c1..00000000 --- a/frontend-dist/js/957.e8a16dfc.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[957],{4885:function(e,t,a){"use strict";a(85331)},13378:function(e,t,a){"use strict";a(85331),a(38736),a(79899)},15616:function(e,t,a){"use strict";a(85331),a(97197)},23597:function(e,t,a){"use strict";a(85331)},33892:function(e,t,a){"use strict";a.d(t,{A:function(){return S}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(30650)),r=(a(19104),a(31802)),o=(a(13378),a(80047)),l=(a(99648),a(56768)),d=a(45130),c=a(24232);const h={class:"directory-tree-picker"},u={class:"tree-container"},f={key:0,class:"error-state"},m={class:"error-text"},p={class:"node-label"},g={class:"tree-container"},b={key:0,class:"error-state"},v={class:"error-text"},k={class:"node-label"};function y(e,t,a,y,w,_){const F=(0,l.g2)("font-awesome-icon"),C=o.S2,T=r.qk,S=s.Vc,$=n.pw,L=i.A;return(0,l.uX)(),(0,l.CE)("div",h,[_.isDesktop?((0,l.uX)(),(0,l.Wv)(S,{key:0,visible:w.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>w.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,l.k6)(()=>[(0,l.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",u,[w.error?((0,l.uX)(),(0,l.CE)("div",f,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",m,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRef",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",p,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:3},8,["visible"])):((0,l.uX)(),(0,l.CE)(l.FK,{key:1},[(0,l.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>_.openDrawer&&_.openDrawer(...e))},[(0,l.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,l.bF)($,{modelValue:w.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>w.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:e.$t("directoryTree.selectDirectory"),class:"directory-tree-drawer"},{default:(0,l.k6)(()=>[(0,l.bo)(((0,l.uX)(),(0,l.CE)("div",g,[w.error?((0,l.uX)(),(0,l.CE)("div",b,[(0,l.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,l.Lk)("span",v,(0,c.v_)(w.error),1),(0,l.bF)(C,{type:"primary",size:"small",onClick:_.fetchDirectoryTree},{default:(0,l.k6)(()=>[(0,l.eW)((0,c.v_)(e.$t("directoryTree.retry")),1)]),_:1},8,["onClick"])])):((0,l.uX)(),(0,l.Wv)(T,{key:1,ref:"treeRefMobile",data:w.treeData,props:w.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:_.handleNodeClick},{default:(0,l.k6)(({node:e,data:t})=>[(0,l.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,l.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,l.Lk)("span",k,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[L,w.loading]])]),_:1},8,["modelValue","title"])],64))])}var w=a(457),_=a(70797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,_.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.serverError"));e=await t.json()}else{const t=await w.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error=this.$t("directoryTree.authFailed"):this.error=this.$t("directoryTree.loadFailed")}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},C=a(71241);const T=(0,C.A)(F,[["render",y],["__scopeId","data-v-62eab69a"]]);var S=T},34396:function(e,t,a){"use strict";a(85331),a(4885)},34896:function(e,t,a){"use strict";a(85331)},35177:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return kn}});var i=a(99114),n=(a(85331),a(30694),a(49385)),s=(a(37952),a(31802)),r=(a(13378),a(9267)),o=(a(15616),a(33892)),l=a(80047),d=(a(99648),a(39623)),c=(a(29092),a(56768)),h=a(24232);const u={class:"move-file-dialog-wrapper"},f={class:"move-dialog-content"},m={class:"move-path-input-container"},p={class:"move-dialog-hint"},g={class:"dialog-footer"},b={class:"move-drawer-content"},v={class:"move-path-section"},k={class:"move-path-label"},y={class:"move-path-input-row"},w={class:"move-dialog-hint"},_={key:0,class:"embedded-tree-section"},F={class:"tree-section-header"},C={class:"tree-section-title"},T={class:"tree-container"},S={key:0,class:"error-state"},$={class:"error-text"},L={class:"node-label"},x={class:"drawer-footer"};function D(e,t,a,D,E,A){const I=d.WK,z=(0,c.g2)("font-awesome-icon"),U=l.S2,P=o.A,B=r.kZ,W=s.qk,R=n.pw,O=i.A;return(0,c.uX)(),(0,c.CE)("div",u,[A.isDesktop?((0,c.uX)(),(0,c.Wv)(B,{key:0,modelValue:A.dialogVisible,"onUpdate:modelValue":t[1]||(t[1]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),width:"500px","show-close":!0,class:"move-dialog",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",g,[(0,c.bF)(U,{onClick:A.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",f,[(0,c.Lk)("div",m,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[0]||(t[0]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},{prepend:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.targetDirectory")),1)]),_:1},8,["modelValue","placeholder"]),(0,c.bF)(P,{"current-directory":a.currentDirectory,source:"admin",onSelect:A.handleDirectorySelect},{trigger:(0,c.k6)(()=>[(0,c.bF)(U,{class:"directory-picker-trigger"},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])]),(0,c.Lk)("p",p,(0,h.v_)(e.$t("moveFile.hint")),1)])]),_:1},8,["modelValue","title","onClose"])):((0,c.uX)(),(0,c.Wv)(R,{key:1,modelValue:A.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=e=>A.dialogVisible=e),title:a.isBatchMove?e.$t("moveFile.batchTitle"):e.$t("moveFile.title"),direction:"btt",size:"auto","show-close":!0,class:"move-drawer",onClose:A.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("div",x,[(0,c.bF)(U,{onClick:A.handleClose,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.cancel")),1)]),_:1},8,["onClick"]),(0,c.bF)(U,{type:"primary",loading:E.loading,onClick:A.handleConfirm,class:"footer-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.confirm")),1)]),_:1},8,["loading","onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",b,[(0,c.Lk)("div",v,[(0,c.Lk)("div",k,(0,h.v_)(e.$t("moveFile.targetDirectory")),1),(0,c.Lk)("div",y,[(0,c.bF)(I,{modelValue:E.targetPath,"onUpdate:modelValue":t[2]||(t[2]=e=>E.targetPath=e),placeholder:e.$t("moveFile.targetPlaceholder"),class:"move-path-input"},null,8,["modelValue","placeholder"]),(0,c.bF)(U,{class:"directory-picker-trigger",onClick:t[3]||(t[3]=e=>E.showTreePicker=!0)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"folder-tree"})]),_:1})]),(0,c.Lk)("p",w,(0,h.v_)(e.$t("moveFile.hintMobile")),1)]),E.showTreePicker?((0,c.uX)(),(0,c.CE)("div",_,[(0,c.Lk)("div",F,[(0,c.Lk)("span",C,(0,h.v_)(e.$t("moveFile.selectDirectory")),1),(0,c.bF)(U,{text:"",onClick:t[4]||(t[4]=e=>E.showTreePicker=!1)},{default:(0,c.k6)(()=>[(0,c.bF)(z,{icon:"times"})]),_:1})]),(0,c.bo)(((0,c.uX)(),(0,c.CE)("div",T,[E.treeError?((0,c.uX)(),(0,c.CE)("div",S,[(0,c.bF)(z,{icon:"exclamation-circle",class:"error-icon"}),(0,c.Lk)("span",$,(0,h.v_)(E.treeError),1),(0,c.bF)(U,{type:"primary",size:"small",onClick:A.fetchDirectoryTree},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("moveFile.retry")),1)]),_:1},8,["onClick"])])):((0,c.uX)(),(0,c.Wv)(W,{key:1,ref:"treeRef",data:E.treeData,props:E.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":a.currentDirectory,class:"directory-tree",onNodeClick:A.handleTreeNodeClick},{default:(0,c.k6)(({node:e,data:t})=>[(0,c.Lk)("span",{class:(0,h.C4)(["tree-node",{"is-current":t.path===a.currentDirectory}])},[(0,c.bF)(z,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,c.Lk)("span",L,(0,h.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[O,E.treeLoading]])])):(0,c.Q3)("",!0)])]),_:1},8,["modelValue","title","onClose"]))])}var E=a(70797),A={name:"MoveFileDialog",components:{DirectoryTreePicker:o.A},props:{modelValue:{type:Boolean,default:!1},currentDirectory:{type:String,default:""},isBatchMove:{type:Boolean,default:!1},initialPath:{type:String,default:"/"}},emits:["update:modelValue","confirm","close"],data(){return{targetPath:"/",loading:!1,windowWidth:window.innerWidth,showTreePicker:!1,treeData:[],treeLoading:!1,treeError:"",treeProps:{children:"children",label:"name"}}},computed:{dialogVisible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},isDesktop(){return this.windowWidth>768}},watch:{modelValue(e){e&&(this.targetPath=this.initialPath||"/",this.showTreePicker=!1)},showTreePicker(e){e&&!this.isDesktop&&this.fetchDirectoryTree()}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},handleDirectorySelect(e){this.targetPath=e},handleConfirm(){this.$emit("confirm",this.targetPath)},handleClose(){this.$emit("update:modelValue",!1),this.$emit("close")},async fetchDirectoryTree(){this.treeLoading=!0,this.treeError="";try{const e=await(0,E.A)("/api/directoryTree",{method:"GET"});if(!e.ok)return void(401===e.status?this.treeError=this.$t("moveFile.authFailed"):this.treeError=this.$t("moveFile.serverError"));const t=await e.json();t.tree?this.treeData=[t.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),this.treeError=this.$t("moveFile.loadTreeFailed")}finally{this.treeLoading=!1}},handleTreeNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.targetPath=t,this.showTreePicker=!1}}},I=a(71241);const z=(0,I.A)(A,[["render",D],["__scopeId","data-v-7aaa437c"]]);var U=z,P=a(45130);const B={class:"mobile-drawer-header"},W={class:"mobile-drawer-title"},R={class:"mobile-drawer-content"},O=["onClick"];function M(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"drawer-slide"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-overlay",onClick:t[3]||(t[3]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"mobile-drawer",onClick:t[2]||(t[2]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",B,[(0,c.Lk)("span",W,(0,h.v_)(e.$t("mobileDirectory.title")),1),(0,c.bF)(r,{icon:"times",class:"mobile-drawer-close",onClick:s.close},null,8,["onClick"])]),(0,c.Lk)("div",R,[(0,c.Lk)("div",{class:(0,h.C4)(["mobile-drawer-item",{active:!a.currentPath}]),onClick:t[0]||(t[0]=e=>s.navigate(""))},[(0,c.bF)(r,{icon:"home",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.rootDirectory")),1)],2),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.pathParts,(e,t)=>((0,c.uX)(),(0,c.CE)("div",{key:t,class:(0,h.C4)(["mobile-drawer-item",{active:t===s.pathParts.length-1}]),style:(0,h.Tr)({paddingLeft:16*(t+1)+16+"px"}),onClick:e=>s.navigate(s.pathParts.slice(0,t+1).join("/"))},[(0,c.bF)(r,{icon:"folder",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e),1)],14,O))),128)),a.currentPath?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"mobile-drawer-back",onClick:t[1]||(t[1]=(...e)=>s.goBack&&s.goBack(...e))},[(0,c.bF)(r,{icon:"arrow-left",class:"mobile-drawer-item-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileDirectory.goBack")),1)])):(0,c.Q3)("",!0)])])])):(0,c.Q3)("",!0)]),_:1})])}a(18111),a(22489);var N={name:"MobileDirectoryDrawer",props:{modelValue:{type:Boolean,default:!1},currentPath:{type:String,default:""}},emits:["update:modelValue","navigate","goBack"],computed:{pathParts(){return this.currentPath.split("/").filter(Boolean)}},methods:{close(){this.$emit("update:modelValue",!1)},navigate(e){this.$emit("navigate",e),this.close()},goBack(){this.$emit("goBack"),this.close()}}};const V=(0,I.A)(N,[["render",M],["__scopeId","data-v-3b79a1b6"]]);var X=V;const j={class:"bottom-sheet-header"},K={class:"bottom-sheet-title"},Z={class:"bottom-sheet-content"};function G(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.Wv)(c.Im,{to:"body"},[(0,c.bF)(P.eB,{name:"bottom-sheet"},{default:(0,c.k6)(()=>[a.modelValue?((0,c.uX)(),(0,c.CE)("div",{key:0,class:"bottom-sheet-overlay",onClick:t[9]||(t[9]=(...e)=>s.close&&s.close(...e))},[(0,c.Lk)("div",{class:"bottom-sheet",onClick:t[8]||(t[8]=(0,P.D$)(()=>{},["stop"]))},[(0,c.Lk)("div",j,[t[10]||(t[10]=(0,c.Lk)("div",{class:"bottom-sheet-handle"},null,-1)),(0,c.Lk)("span",K,(0,h.v_)(a.title),1)]),(0,c.Lk)("div",Z,[a.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[5]||(t[5]=e=>s.handleAction("folderCopy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[6]||(t[6]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFolder")),1)])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[0]||(t[0]=e=>s.handleAction("detail"))},[(0,c.bF)(r,{icon:"info-circle",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.viewDetail")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[1]||(t[1]=e=>s.handleAction("copy"))},[(0,c.bF)(r,{icon:"copy",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.copyLink")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[2]||(t[2]=e=>s.handleAction("download"))},[(0,c.bF)(r,{icon:"download",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.downloadFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[3]||(t[3]=e=>s.handleAction("move"))},[(0,c.bF)(r,{icon:"file-export",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.moveFile")),1)]),(0,c.Lk)("div",{class:"bottom-sheet-item",onClick:t[4]||(t[4]=e=>s.handleAction("tag"))},[(0,c.bF)(r,{icon:"tags",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("mobileAction.tagManagement")),1)])],64)),(0,c.Lk)("div",{class:"bottom-sheet-item bottom-sheet-danger",onClick:t[7]||(t[7]=e=>s.handleAction("delete"))},[(0,c.bF)(r,{icon:"trash-alt",class:"bottom-sheet-icon"}),(0,c.Lk)("span",null,(0,h.v_)(a.isFolder?e.$t("mobileAction.deleteFolder"):e.$t("mobileAction.deleteFile")),1)])])])])):(0,c.Q3)("",!0)]),_:1})])}var H={name:"MobileActionSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},isFolder:{type:Boolean,default:!1}},emits:["update:modelValue","action"],methods:{close(){this.$emit("update:modelValue",!1)},handleAction(e){this.$emit("action",e),this.close()}}};const q=(0,I.A)(H,[["render",G],["__scopeId","data-v-efef5a4c"]]);var Q=q,Y=a(4275),J=a(89559),ee=a(12687);a(18785);const te={class:"batch-tag-container"},ae={class:"tab-content"},ie={class:"tab-description"},ne={class:"input-section"},se={key:0,class:"suggestions-panel"},re=["onClick"],oe={class:"tags-to-add-section"},le={key:0,class:"tags-container"},de={key:1,class:"empty-message"},ce={class:"action-buttons"},he={class:"tab-content"},ue={class:"tab-description"},fe={key:0,class:"common-tags-section"},me={class:"tags-container"},pe={key:1,class:"empty-message"},ge={class:"tab-content"},be={class:"tab-description"},ve={class:"action-buttons"};function ke(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=Y.v$,g=J.KR,b=Y.q,v=r.kZ;return(0,c.uX)(),(0,c.Wv)(v,{title:e.$t("batchTag.title"),modelValue:s.visible,"onUpdate:modelValue":t[2]||(t[2]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{default:(0,c.k6)(()=>[(0,c.Lk)("div",te,[(0,c.bF)(b,{modelValue:n.activeTab,"onUpdate:modelValue":t[1]||(t[1]=e=>n.activeTab=e),type:"border-card"},{default:(0,c.k6)(()=>[(0,c.bF)(p,{label:e.$t("batchTag.addTab"),name:"add"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ae,[(0,c.Lk)("p",ie,(0,h.v_)(e.$t("batchTag.addDescription",{count:s.fileCount})),1),(0,c.Lk)("div",ne,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("batchTag.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddInputTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddInputTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",se,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,re))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",oe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.pendingTags")),1),n.tagsToAdd.length>0?((0,c.uX)(),(0,c.CE)("div",le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.tagsToAdd,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.removeFromToAdd(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",de,(0,h.v_)(e.$t("batchTag.noPendingTags")),1))]),(0,c.Lk)("div",ce,[(0,c.bF)(u,{type:"primary",onClick:s.executeAddTags,loading:n.loading,disabled:0===n.tagsToAdd.length},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.addToAllFiles")),1)]),_:1},8,["onClick","loading","disabled"])])])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.removeTab"),name:"remove"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",he,[(0,c.Lk)("p",ue,(0,h.v_)(e.$t("batchTag.removeDescription")),1),n.commonTags.length>0?((0,c.uX)(),(0,c.CE)("div",fe,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("batchTag.commonTags")),1),(0,c.Lk)("div",me,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.commonTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveCommonTag(e),class:"tag-item",type:"warning"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])])):((0,c.uX)(),(0,c.CE)("div",pe,(0,h.v_)(e.$t("batchTag.noCommonTags")),1))])]),_:1},8,["label"]),(0,c.bF)(p,{label:e.$t("batchTag.clearTab"),name:"clear"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ge,[(0,c.Lk)("p",be,(0,h.v_)(e.$t("batchTag.clearDescription",{count:s.fileCount})),1),(0,c.bF)(g,{title:e.$t("batchTag.clearWarningTitle"),type:"warning",description:e.$t("batchTag.clearWarningDesc"),closable:!1,style:{"margin-bottom":"20px"},center:""},null,8,["title","description"]),(0,c.Lk)("div",ve,[(0,c.bF)(u,{type:"danger",onClick:s.handleClearAllTags,loading:n.loading},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("batchTag.confirmClearAll")),1)]),_:1},8,["onClick","loading"])])])]),_:1},8,["label"])]),_:1},8,["modelValue"])])]),_:1},8,["title","modelValue","width","onClose"])}a(44114),a(61701);var ye=a(51219),we=a(12933),_e={name:"BatchTagDialog",props:{modelValue:{type:Boolean,default:!1},selectedFiles:{type:Array,required:!0,default:()=>[]}},emits:["update:modelValue","tagsUpdated"],data(){return{activeTab:"add",inputTag:"",tagsToAdd:[],commonTags:[],suggestions:[],showSuggestions:!1,loading:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"600px"},selectedFilesOnly(){return this.selectedFiles.filter(e=>!e.isFolder)},fileCount(){return this.selectedFilesOnly.length},fileIds(){return this.selectedFilesOnly.map(e=>e.name)}},watch:{visible(e){e?this.loadCommonTags():this.resetData()},activeTab(e){"remove"===e&&this.loadCommonTags()}},methods:{resetData(){this.tagsToAdd=[],this.inputTag="",this.showSuggestions=!1,this.activeTab="add"},async loadCommonTags(){if(0!==this.selectedFilesOnly.length)try{const e=this.selectedFilesOnly.map(e=>(0,E.A)(`/api/manage/tags/${encodeURIComponent(e.name)}`,{method:"GET"})),t=await Promise.all(e),a=[];for(const i of t)if(i.ok){const e=await i.json();a.push(e.tags||[])}a.length>0?this.commonTags=a[0].filter(e=>a.every(t=>t.includes(e))):this.commonTags=[]}catch(e){console.error("Error loading common tags:",e),ye.nk.error(this.$t("batchTag.loadCommonTagsFailed"))}else this.commonTags=[]},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.tagsToAdd.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddInputTag()},handleAddInputTag(){const e=this.inputTag.trim();if(e){if(this.tagsToAdd.includes(e))return ye.nk.warning(this.$t("batchTag.tagAlreadyInList")),this.inputTag="",void(this.showSuggestions=!1);this.tagsToAdd.push(e),this.inputTag="",this.showSuggestions=!1}},removeFromToAdd(e){const t=this.tagsToAdd.indexOf(e);t>-1&&this.tagsToAdd.splice(t,1)},async executeAddTags(){if(0!==this.tagsToAdd.length){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"add",tags:this.tagsToAdd})});if(!e.ok)throw new Error(this.$t("batchTag.addFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.addFailed"));ye.nk.success(this.$t("batchTag.addSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.tagsToAdd=[]}}catch(e){console.error("Error adding tags:",e),ye.nk.error(this.$t("batchTag.addFailed"))}finally{this.loading=!1}}else ye.nk.warning(this.$t("batchTag.pleaseAddTags"))},async handleRemoveCommonTag(e){this.loading=!0;try{const t=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("batchTag.removeFailed"));{const e=await t.json();if(!(e.success||e.updated>0))throw new Error(this.$t("batchTag.removeFailed"));ye.nk.success(this.$t("batchTag.removeSuccess",{count:e.updated})),this.$emit("tagsUpdated"),await this.loadCommonTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("batchTag.removeFailed"))}finally{this.loading=!1}},handleClearAllTags(){we.s.confirm(this.$t("batchTag.clearConfirmMessage",{count:this.fileCount}),this.$t("batchTag.clearConfirmTitle"),{confirmButtonText:this.$t("batchTag.clearConfirmOk"),cancelButtonText:this.$t("batchTag.clearConfirmCancel"),type:"warning"}).then(()=>{this.executeClearTags()}).catch(()=>{ye.nk.info(this.$t("batchTag.clearCancelled"))})},async executeClearTags(){this.loading=!0;try{const e=await(0,E.A)("/api/manage/tags/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileIds:this.fileIds,action:"set",tags:[]})});if(!e.ok)throw new Error(this.$t("batchTag.clearFailed"));{const t=await e.json();if(!(t.success||t.updated>0))throw new Error(this.$t("batchTag.clearFailed"));ye.nk.success(this.$t("batchTag.clearSuccess",{count:t.updated})),this.$emit("tagsUpdated"),this.commonTags=[]}}catch(e){console.error("Error clearing tags:",e),ye.nk.error(this.$t("batchTag.clearFailed"))}finally{this.loading=!1}},handleClose(){this.visible=!1}}};const Fe=(0,I.A)(_e,[["render",ke],["__scopeId","data-v-0d04afa1"]]);var Ce=Fe,Te=a(813);a(34896);const Se={class:"tag-management-container"},$e={class:"input-section"},Le={key:0,class:"suggestions-panel"},xe=["onClick"],De={class:"current-tags-section"},Ee={key:0,class:"tags-container"},Ae={key:1,class:"empty-message"},Ie={class:"popular-tags-section"},ze={key:0,class:"tags-container"},Ue={key:1,class:"empty-message"},Pe={key:2,class:"empty-message"},Be={class:"dialog-footer"};function We(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=ee.u,p=(0,c.g2)("Loading"),g=Te.tk,b=r.kZ;return(0,c.uX)(),(0,c.Wv)(b,{title:e.$t("tagManagement.title"),modelValue:s.visible,"onUpdate:modelValue":t[1]||(t[1]=e=>s.visible=e),width:s.dialogWidth,onClose:s.handleClose},{footer:(0,c.k6)(()=>[(0,c.Lk)("span",Be,[(0,c.bF)(u,{onClick:s.handleClose},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("tagManagement.close")),1)]),_:1},8,["onClick"])])]),default:(0,c.k6)(()=>[(0,c.Lk)("div",Se,[(0,c.Lk)("div",$e,[(0,c.bF)(f,{modelValue:n.inputTag,"onUpdate:modelValue":t[0]||(t[0]=e=>n.inputTag=e),placeholder:e.$t("tagManagement.inputPlaceholder"),onKeyup:(0,P.jR)(s.handleAddTag,["enter"]),onInput:s.handleInputChange,clearable:""},{append:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:s.handleAddTag,type:"primary"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"plus"})]),_:1},8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup","onInput"]),n.showSuggestions&&n.suggestions.length>0?((0,c.uX)(),(0,c.CE)("div",Le,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.suggestions,e=>((0,c.uX)(),(0,c.CE)("div",{key:e,class:"suggestion-item",onClick:t=>s.selectSuggestion(e)},(0,h.v_)(e),9,xe))),128))])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",De,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.currentTags")),1),n.currentTags.length>0?((0,c.uX)(),(0,c.CE)("div",Ee,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,closable:"",onClose:t=>s.handleRemoveTag(e),class:"tag-item"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClose"]))),128))])):((0,c.uX)(),(0,c.CE)("div",Ae,(0,h.v_)(e.$t("tagManagement.noTags")),1))]),(0,c.Lk)("div",Ie,[(0,c.Lk)("h4",null,(0,h.v_)(e.$t("tagManagement.popularTags")),1),n.popularTags.length>0?((0,c.uX)(),(0,c.CE)("div",ze,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.popularTags,e=>((0,c.uX)(),(0,c.Wv)(m,{key:e,onClick:t=>s.handleAddPopularTag(e),class:"tag-item clickable",type:"info"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))])):n.loadingPopularTags?((0,c.uX)(),(0,c.CE)("div",Ue,[(0,c.bF)(g,{class:"is-loading"},{default:(0,c.k6)(()=>[(0,c.bF)(p)]),_:1}),(0,c.eW)(" "+(0,h.v_)(e.$t("tagManagement.loading")),1)])):((0,c.uX)(),(0,c.CE)("div",Pe,(0,h.v_)(e.$t("tagManagement.noPopularTags")),1))])])]),_:1},8,["title","modelValue","width","onClose"])}var Re=a(57477),Oe={name:"TagManagementDialog",components:{Loading:Re.Loading},props:{modelValue:{type:Boolean,default:!1},fileId:{type:String,required:!0}},emits:["update:modelValue","tagsUpdated"],data(){return{currentTags:[],inputTag:"",suggestions:[],popularTags:[],showSuggestions:!1,loading:!1,loadingPopularTags:!1,debounceTimer:null}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"90%":"500px"}},watch:{visible(e){e&&(this.loadFileTags(),this.loadPopularTags())}},methods:{async loadFileTags(){try{const e=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"GET"});if(!e.ok)throw new Error("Failed to load tags");{const t=await e.json();this.currentTags=t.tags||[]}}catch(e){console.error("Error loading file tags:",e),ye.nk.error(this.$t("tagManagement.loadFailed"))}},async loadPopularTags(){this.loadingPopularTags=!0;try{const e=await(0,E.A)("/api/manage/tags/autocomplete?limit=20",{method:"GET"});if(e.ok){const t=await e.json();this.popularTags=(t.tags||[]).filter(e=>!this.currentTags.includes(e))}}catch(e){console.error("Error loading popular tags:",e)}finally{this.loadingPopularTags=!1}},handleInputChange(){clearTimeout(this.debounceTimer),this.inputTag&&0!==this.inputTag.trim().length?this.debounceTimer=setTimeout(()=>{this.fetchSuggestions()},300):this.showSuggestions=!1},async fetchSuggestions(){try{const e=this.inputTag.trim().toLowerCase(),t=await(0,E.A)(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(e)}&limit=10`,{method:"GET"});if(t.ok){const e=await t.json();this.suggestions=(e.tags||[]).filter(e=>!this.currentTags.includes(e)),this.showSuggestions=this.suggestions.length>0}}catch(e){console.error("Error fetching suggestions:",e)}},selectSuggestion(e){this.inputTag=e,this.showSuggestions=!1,this.handleAddTag()},async handleAddTag(){const e=this.inputTag.trim();if(e){if(this.currentTags.includes(e))return ye.nk.warning(this.$t("tagManagement.tagExists")),this.inputTag="",void(this.showSuggestions=!1);try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"add",tags:[e]})});if(!t.ok){const e=await t.json();throw new Error(e.message||this.$t("tagManagement.addFailed"))}{const e=await t.json();this.currentTags=e.tags||[],this.inputTag="",this.showSuggestions=!1,ye.nk.success(this.$t("tagManagement.addSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error adding tag:",t),ye.nk.error(t.message||this.$t("tagManagement.addFailed"))}}},async handleRemoveTag(e){try{const t=await(0,E.A)(`/api/manage/tags/${encodeURIComponent(this.fileId)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"remove",tags:[e]})});if(!t.ok)throw new Error(this.$t("tagManagement.removeFailed"));{const e=await t.json();this.currentTags=e.tags||[],ye.nk.success(this.$t("tagManagement.removeSuccess")),this.$emit("tagsUpdated",this.currentTags),this.loadPopularTags()}}catch(t){console.error("Error removing tag:",t),ye.nk.error(this.$t("tagManagement.removeFailed"))}},handleAddPopularTag(e){this.inputTag=e,this.handleAddTag()},handleClose(){this.visible=!1,this.inputTag="",this.showSuggestions=!1,this.currentTags=[],this.popularTags=[]}}};const Me=(0,I.A)(Oe,[["render",We],["__scopeId","data-v-24c809e4"]]);var Ne=Me,Ve=a(55558),Xe=(a(10456),a(66810)),je=(a(34396),a(4885),a(82006)),Ke=(a(98642),a(63003),a(59869)),Ze=(a(70415),a(73565),a(57009));a(78450);const Ge={class:"detail-actions"},He={class:"preview-section"},qe={class:"preview-content"},Qe=["src"],Ye=["src"],Je={key:1},et={key:1},tt={key:0,style:{display:"flex","align-items":"center",gap:"6px"}},at={key:1,style:{color:"#59636E"}},it={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"5px"}},nt={key:1,style:{color:"#59636E"}};function st(e,t,a,i,n,s){const o=(0,c.g2)("font-awesome-icon"),u=l.S2,f=d.WK,m=Y.v$,p=Y.q,g=Ze.Zq,b=Ke.MF,v=ee.u,k=Ke.TS,y=je.xE,w=je.US,_=r.kZ;return(0,c.uX)(),(0,c.Wv)(_,{title:e.$t("fileDetail.title"),modelValue:s.visible,"onUpdate:modelValue":t[24]||(t[24]=e=>s.visible=e),width:s.dialogWidth},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ge,[n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:0,type:"primary",onClick:t[0]||(t[0]=t=>e.$emit("download")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"download",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.download")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:1,type:"primary",onClick:t[1]||(t[1]=t=>e.$emit("tagManagement")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"tags",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.tags")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:2,type:"primary",onClick:t[2]||(t[2]=t=>e.$emit("block")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"ban",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.blacklist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:3,type:"primary",onClick:t[3]||(t[3]=t=>e.$emit("white")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"shield-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.whitelist")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:4,type:"danger",onClick:t[4]||(t[4]=t=>e.$emit("delete")),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"trash-alt",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.deleteBtn")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:5,type:"warning",onClick:t[5]||(t[5]=e=>s.startEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"edit",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.edit")),1)]),_:1})),n.isEditing?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(u,{key:6,type:"info",onClick:t[6]||(t[6]=e=>s.openRenameDialog()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{icon:"i-cursor",style:{"margin-right":"3px"}}),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.rename")),1)]),_:1})),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:7,type:"success",onClick:t[7]||(t[7]=e=>s.saveMetadata()),round:"",size:"small",class:"detail-action",loading:n.editSaving},{default:(0,c.k6)(()=>[n.editSaving?(0,c.Q3)("",!0):((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"save",style:{"margin-right":"3px"}})),(0,c.eW)(" "+(0,h.v_)(e.$t("fileDetail.save")),1)]),_:1},8,["loading"])):(0,c.Q3)("",!0),n.isEditing?((0,c.uX)(),(0,c.Wv)(u,{key:8,onClick:t[8]||(t[8]=e=>s.cancelEdit()),round:"",size:"small",class:"detail-action"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.cancel")),1)]),_:1})):(0,c.Q3)("",!0)]),(0,c.bF)(p,{modelValue:n.activeTab,"onUpdate:modelValue":t[16]||(t[16]=e=>n.activeTab=e),onTabClick:s.handleTabClick,style:{"margin-bottom":"10px"}},{default:(0,c.k6)(()=>[(0,c.bF)(m,{label:e.$t("fileDetail.originUrl"),name:"originUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.originUrl,"onUpdate:modelValue":t[9]||(t[9]=e=>a.urls.originUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1},8,["label"]),(0,c.bF)(m,{label:"Markdown",name:"mdUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.mdUrl,"onUpdate:modelValue":t[10]||(t[10]=e=>a.urls.mdUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"HTML",name:"htmlUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.htmlUrl,"onUpdate:modelValue":t[11]||(t[11]=e=>a.urls.htmlUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),(0,c.bF)(m,{label:"BBCode",name:"bbUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.bbUrl,"onUpdate:modelValue":t[12]||(t[12]=e=>a.urls.bbUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1}),a.file?.metadata?.TgFileId?((0,c.uX)(),(0,c.Wv)(m,{key:0,label:"TG File ID",name:"tgId"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.tgId,"onUpdate:modelValue":t[13]||(t[13]=e=>a.urls.tgId=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3Location?((0,c.uX)(),(0,c.Wv)(m,{key:1,label:"S3 Location",name:"s3Location"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3Location,"onUpdate:modelValue":t[14]||(t[14]=e=>a.urls.S3Location=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0),a.file?.metadata?.S3CdnFileUrl?((0,c.uX)(),(0,c.Wv)(m,{key:2,label:"S3 CDN URL",name:"s3CdnFileUrl"},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:a.urls.S3CdnFileUrl,"onUpdate:modelValue":t[15]||(t[15]=e=>a.urls.S3CdnFileUrl=e),readonly:"",onClick:s.handleUrlClick},null,8,["modelValue","onClick"])]),_:1})):(0,c.Q3)("",!0)]),_:1},8,["modelValue","onTabClick"]),(0,c.Lk)("div",He,[(0,c.Lk)("div",qe,[s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:0,src:a.fileLink,autoplay:"",muted:"",loop:"",class:"video-preview",onClick:t[17]||(t[17]=(...e)=>s.openImageLink&&s.openImageLink(...e))},null,8,Qe)):s.isAudio?((0,c.uX)(),(0,c.CE)("audio",{key:1,src:a.fileLink,controls:"",autoplay:"",class:"audio-preview"},null,8,Ye)):s.isImage?((0,c.uX)(),(0,c.Wv)(g,{key:2,src:a.fileLink,"preview-src-list":[a.fileLink],"preview-teleported":!0,fit:"contain",lazy:"",class:"image-preview"},null,8,["src","preview-src-list"])):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"file-icon-detail"}))])]),(0,c.bF)(k,{border:"",column:s.descColumn},{default:(0,c.k6)(()=>[(0,c.bF)(b,{label:e.$t("fileDetail.fileNameLabel")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileName,"onUpdate:modelValue":t[18]||(t[18]=e=>n.editForm.FileName=e),size:"small",placeholder:e.$t("fileDetail.fileNamePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",Je,(0,h.v_)(a.file?.metadata?.FileName||a.file?.name),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileType")},{default:(0,c.k6)(()=>[n.isEditing?((0,c.uX)(),(0,c.Wv)(f,{key:0,modelValue:n.editForm.FileType,"onUpdate:modelValue":t[19]||(t[19]=e=>n.editForm.FileType=e),size:"small",placeholder:e.$t("fileDetail.fileTypePlaceholder")},null,8,["modelValue","placeholder"])):((0,c.uX)(),(0,c.CE)("span",et,(0,h.v_)(a.file?.metadata?.FileType||e.$t("fileDetail.unknown")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileSizeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.fileSizeDisplay),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.imageDimensions")},{default:(0,c.k6)(()=>[s.imageDimensions?((0,c.uX)(),(0,c.CE)("div",tt,[(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Width)+" × "+(0,h.v_)(a.file?.metadata?.Height),1),(0,c.bF)(v,{size:"small",type:"info",style:{display:"inline-flex","align-items":"center","justify-content":"center"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.orientationIcon),1)]),_:1})])):((0,c.uX)(),(0,c.CE)("span",at,(0,h.v_)(e.$t("fileDetail.noDimensions")),1))]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadTimeLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.uploadTime),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.channelTypeAndName")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:"info",style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.Channel||e.$t("fileDetail.unknown")),1)]),_:1}),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.ChannelName||"-"),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.accessStatusAndReview")},{default:(0,c.k6)(()=>[(0,c.bF)(v,{size:"small",type:s.accessTagType,style:{"margin-right":"6px"}},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(s.accessType),1)]),_:1},8,["type"]),(0,c.Lk)("span",null,(0,h.v_)(a.file?.metadata?.Label||e.$t("fileDetail.noTags")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadIP")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadIP||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.uploadAddressLabel")},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(a.file?.metadata?.UploadAddress||e.$t("fileDetail.unknown")),1)]),_:1},8,["label"]),(0,c.bF)(b,{label:e.$t("fileDetail.fileTags")},{default:(0,c.k6)(()=>[a.file?.metadata?.Tags&&a.file?.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",it,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.file?.metadata?.Tags,e=>((0,c.uX)(),(0,c.Wv)(v,{key:e,size:"small"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1024))),128))])):((0,c.uX)(),(0,c.CE)("span",nt,(0,h.v_)(e.$t("fileDetail.noTags")),1))]),_:1},8,["label"])]),_:1},8,["column"]),(0,c.bF)(_,{modelValue:n.showRenameDialog,"onUpdate:modelValue":t[23]||(t[23]=e=>n.showRenameDialog=e),title:e.$t("fileDetail.renameTitle"),width:s.dialogWidth,"append-to-body":""},{footer:(0,c.k6)(()=>[(0,c.bF)(u,{onClick:t[21]||(t[21]=e=>s.closeRenameDialog())},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameCancel")),1)]),_:1}),(0,c.bF)(u,{type:"primary",onClick:t[22]||(t[22]=e=>s.submitRename()),loading:n.renameSaving,disabled:!n.renameValidation.valid},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("fileDetail.renameConfirm")),1)]),_:1},8,["loading","disabled"])]),default:(0,c.k6)(()=>[(0,c.bF)(w,{onSubmit:(0,P.D$)(s.submitRename,["prevent"])},{default:(0,c.k6)(()=>[(0,c.bF)(y,{label:e.$t("fileDetail.renameLabel"),error:n.renameValidation.error},{default:(0,c.k6)(()=>[(0,c.bF)(f,{modelValue:n.renameForm.newFileId,"onUpdate:modelValue":t[20]||(t[20]=e=>n.renameForm.newFileId=e),placeholder:e.$t("fileDetail.renamePlaceholder"),onInput:s.validateRenameInput,clearable:""},null,8,["modelValue","placeholder","onInput"])]),_:1},8,["label","error"])]),_:1},8,["onSubmit"])]),_:1},8,["modelValue","title","width"])]),_:1},8,["title","modelValue","width"])}const rt=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;function ot(e,t){return e&&""!==e.trim()?e===t?{valid:!1,error:"文件名未发生变化"}:e.includes("..")?{valid:!1,error:'文件名不能包含路径穿越字符 ".."'}:/\/\.\//.test(e)||/^\.\//.test(e)?{valid:!1,error:'文件名不能包含单独的 "." 路径段'}:rt.test(e)?{valid:!1,error:"文件名包含非法字符,请使用合法的文件名格式"}:e.includes("//")?{valid:!1,error:"文件名不能包含连续的斜杠"}:{valid:!0}:{valid:!1,error:"文件名不能为空"}}var lt={name:"FileDetailDialog",props:{modelValue:{type:Boolean,default:!1},file:{type:Object,default:null},fileLink:{type:String,default:""},urls:{type:Object,default:()=>({originUrl:"",mdUrl:"",htmlUrl:"",bbUrl:"",tgId:"",S3Location:"",S3CdnFileUrl:""})}},emits:["update:modelValue","download","tagManagement","block","white","delete","metadataUpdated","fileRenamed"],watch:{visible(e){e||(this.isEditing=!1,this.editSaving=!1)}},data(){return{activeTab:"originUrl",isEditing:!1,editForm:{FileName:"",FileType:""},editSaving:!1,showRenameDialog:!1,renameForm:{newFileId:""},renameValidation:{valid:!0,error:""},renameSaving:!1}},computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth<768?"95%":"900px"},descColumn(){return window.innerWidth<768?1:2},isVideo(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.file?.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.file?.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},uploadTime(){return this.file?.metadata?.TimeStamp?new Date(this.file.metadata.TimeStamp).toLocaleString():this.$t("fileDetail.unknown")},accessType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?this.$t("fileDetail.accessNormalWhitelist"):"Block"===e?this.$t("fileDetail.accessBlockedBlacklist"):"adult"===t?this.$t("fileDetail.accessBlockedReview"):this.$t("fileDetail.accessNormal")},accessTagType(){const e=this.file?.metadata?.ListType,t=this.file?.metadata?.Label;return"White"===e?"success":"Block"===e||"adult"===t?"danger":"success"},imageDimensions(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;return!(!e||!t)||null},orientationIcon(){const e=this.file?.metadata?.Width,t=this.file?.metadata?.Height;if(!e||!t)return"";const a=e/t;return a>1.1?this.$t("fileDetail.orientationLandscape"):a<.9?this.$t("fileDetail.orientationPortrait"):this.$t("fileDetail.orientationSquare")},fileSizeDisplay(){const e=this.file?.metadata?.FileSizeBytes,t=this.file?.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:this.$t("fileDetail.unknown")}},methods:{handleVideoClick(e){const t=e.target;t.paused?t.play():t.pause()},handleTabClick(){},handleUrlClick(e){const t=e.target;t.select(),navigator.clipboard.writeText(t.value).then(()=>{ye.nk.success(this.$t("fileDetail.linkCopied"))})},openImageLink(){this.fileLink&&window.open(this.fileLink,"_blank")},startEdit(){this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.isEditing=!0},cancelEdit(){this.isEditing=!1,this.editForm.FileName=this.file?.metadata?.FileName||"",this.editForm.FileType=this.file?.metadata?.FileType||"",this.editSaving=!1},async saveMetadata(){this.editSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/metadata/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({FileName:this.editForm.FileName,FileType:this.editForm.FileType})});if(!t.ok){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.metadataSaveFailed"))}{const a=await t.json();ye.nk.success(this.$t("fileDetail.metadataSaved")),this.isEditing=!1,this.$emit("metadataUpdated",e,a.metadata)}}catch(e){console.error("Error saving metadata:",e),ye.nk.error(e.message||this.$t("fileDetail.metadataSaveFailed"))}finally{this.editSaving=!1}},openRenameDialog(){this.renameForm.newFileId=this.file?.name||"",this.renameValidation={valid:!0,error:""},this.showRenameDialog=!0},closeRenameDialog(){this.showRenameDialog=!1,this.renameForm.newFileId="",this.renameValidation={valid:!0,error:""}},validateRenameInput(){const e=ot(this.renameForm.newFileId,this.file?.name||"");this.renameValidation={valid:e.valid,error:e.error||""}},async submitRename(){if(!this.renameSaving&&(this.validateRenameInput(),this.renameValidation.valid)){this.renameSaving=!0;try{const e=this.file.name,t=await(0,E.A)(`/api/manage/rename/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({newFileId:this.renameForm.newFileId})});if(t.ok){const a=await t.json();ye.nk.success(this.$t("fileDetail.renameSuccess")),this.showRenameDialog=!1,this.$emit("fileRenamed",e,this.renameForm.newFileId,a.metadata)}else{if(409!==t.status){const e=await t.json().catch(()=>({}));throw new Error(e.message||this.$t("fileDetail.renameFailed"))}this.renameValidation={valid:!1,error:this.$t("fileDetail.renameConflict")}}}catch(e){console.error("Error renaming file:",e),ye.nk.error(e.message||this.$t("fileDetail.renameFailed"))}finally{this.renameSaving=!1}}}}};const dt=(0,I.A)(lt,[["render",st],["__scopeId","data-v-38a97614"]]);var ct=dt,ht=a(78507);a(213);const ut={key:0,class:"batch-floating-bar"},ft={class:"batch-selection-summary"},mt={class:"batch-selection-count"},pt={class:"batch-floating-actions"};function gt(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=l.S2,d=ht.R7;return(0,c.uX)(),(0,c.Wv)(P.eB,{name:"batch-toolbar"},{default:(0,c.k6)(()=>[a.selectedCount>0?((0,c.uX)(),(0,c.CE)("div",ut,[(0,c.bF)(d,{disabled:s.disableTooltip,content:e.$t("dashboard.clearSelection"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:"batch-floating-btn ghost","aria-label":e.$t("dashboard.clearSelection"),onClick:s.handleClear},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"times",class:"batch-floating-icon"})]),_:1},8,["aria-label","onClick"])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:s.disableTooltip,content:`${a.selectedCount} ${e.$t("dashboard.selectedItems")}`,placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",ft,[(0,c.Lk)("span",mt,(0,h.v_)(a.selectedCount),1)])]),_:1},8,["disabled","content"]),t[0]||(t[0]=(0,c.Lk)("span",{class:"batch-toolbar-divider"},null,-1)),(0,c.Lk)("div",pt,[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.actions,t=>((0,c.uX)(),(0,c.Wv)(d,{key:t.command,disabled:s.disableTooltip,content:e.$t(t.label),placement:"top"},{default:(0,c.k6)(()=>[(0,c.bF)(o,{class:(0,h.C4)(["batch-floating-btn",t.className]),"aria-label":e.$t(t.label),onClick:e=>s.handleAction(t.command)},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:t.icon,class:"batch-floating-icon"},null,8,["icon"])]),_:2},1032,["class","aria-label","onClick"])]),_:2},1032,["disabled","content"]))),128))])])):(0,c.Q3)("",!0)]),_:1})}var bt={name:"BatchActionBar",props:{selectedCount:{type:Number,required:!0}},emits:["action","clear"],data(){return{actions:[{command:"copy",label:"dashboard.copy",icon:"copy",className:"copy"},{command:"download",label:"dashboard.download",icon:"download",className:"download"},{command:"move",label:"dashboard.move",icon:"file-export",className:"move"},{command:"tagManagement",label:"dashboard.tagManagement",icon:"tags",className:"tag"},{command:"ban",label:"dashboard.addToBlacklist",icon:"ban",className:"ban"},{command:"white",label:"dashboard.addToWhitelist",icon:"shield-alt",className:"white"},{command:"delete",label:"dashboard.delete",icon:"trash-alt",className:"danger"}]}},computed:{disableTooltip(){return window.innerWidth<768}},methods:{handleAction(e){this.$emit("action",e)},handleClear(){this.$emit("clear")}}};const vt=(0,I.A)(bt,[["render",gt],["__scopeId","data-v-6de9da06"]]);var kt=vt,yt=a(54880),wt=(a(4318),a(77815));a(72907);const _t=["aria-checked"];function Ft(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon");return(0,c.uX)(),(0,c.CE)("span",{class:(0,h.C4)(["dashboard-checkbox",[`dashboard-checkbox--${a.variant}`,{checked:a.checked,indeterminate:a.indeterminate&&!a.checked}]]),role:"checkbox","aria-checked":s.ariaChecked,tabindex:"0",onClick:t[0]||(t[0]=(...e)=>s.handleClick&&s.handleClick(...e)),onKeydown:[t[1]||(t[1]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["enter"])),t[2]||(t[2]=(0,P.jR)((0,P.D$)((...e)=>s.handleClick&&s.handleClick(...e),["prevent"]),["space"]))]},[a.checked?((0,c.uX)(),(0,c.Wv)(r,{key:0,icon:"check",class:"dashboard-checkbox-mark"})):a.indeterminate?((0,c.uX)(),(0,c.Wv)(r,{key:1,icon:"minus",class:"dashboard-checkbox-mark"})):(0,c.Q3)("",!0)],42,_t)}var Ct={name:"DashboardCheckbox",props:{checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},variant:{type:String,default:"list",validator:e=>["list","breadcrumb"].includes(e)}},emits:["click"],computed:{ariaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}},methods:{handleClick(e){this.$emit("click",e)}}};const Tt=(0,I.A)(Ct,[["render",Ft],["__scopeId","data-v-f8222714"]]);var St=Tt;const $t={class:"list-col list-col-checkbox"},Lt=["src"],xt=["src"],Dt=["title"],Et={class:"filename-start"},At={class:"filename-end"},It={class:"list-col list-col-tags"},zt={key:1,class:"list-empty"},Ut={class:"list-col list-col-channel"},Pt={class:"list-col list-col-channel-name"},Bt={key:0,class:"channel-name-box"},Wt={key:1,class:"list-empty"},Rt={class:"list-col list-col-address"},Ot={key:0,class:"address-box"},Mt={key:1,class:"list-empty"},Nt={class:"list-col list-col-size"},Vt={class:"list-col list-col-date"},Xt={class:"list-col list-col-actions"};function jt(e,t,a,i,n,s){const r=St,o=(0,c.g2)("font-awesome-icon"),l=ht.R7;return(0,c.uX)(),(0,c.CE)("div",{class:"list-item",onTouchstart:t[8]||(t[8]=t=>e.$emit("touchstart",t)),onTouchend:t[9]||(t[9]=t=>e.$emit("touchend",t)),onTouchmove:t[10]||(t[10]=t=>e.$emit("touchmove",t))},[(0,c.Lk)("div",$t,[(0,c.bF)(r,{checked:n.localSelected,onClick:(0,P.D$)(s.toggleSelect,["stop"])},null,8,["checked","onClick"])]),(0,c.Lk)("div",{class:"list-col list-col-preview",onClick:t[0]||(t[0]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[s.isFolder?((0,c.uX)(),(0,c.Wv)(o,{key:0,icon:"folder-open",class:"list-folder-icon"})):s.isVideo?((0,c.uX)(),(0,c.CE)("video",{key:1,src:a.fileLink,class:"list-preview-img",muted:"",preload:"metadata"},null,8,Lt)):s.isImage?((0,c.uX)(),(0,c.CE)("img",{key:2,src:a.fileLink,class:"list-preview-img",loading:"lazy",decoding:"async"},null,8,xt)):((0,c.uX)(),(0,c.Wv)(o,{key:3,icon:"file",class:"list-file-icon"}))]),(0,c.Lk)("div",{class:"list-col list-col-name",onClick:t[1]||(t[1]=(...e)=>s.handlePreviewClick&&s.handlePreviewClick(...e))},[(0,c.Lk)("span",{class:"filename-ellipsis",title:s.displayName},[(0,c.Lk)("span",Et,(0,h.v_)(s.fileNameStart),1),(0,c.Lk)("span",At,(0,h.v_)(s.fileNameEnd),1)],8,Dt)]),(0,c.Lk)("div",It,[!s.isFolder&&a.item.metadata?.Tags&&a.item.metadata.Tags.length>0?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(a.item.metadata.Tags.slice(0,3),(e,t)=>((0,c.uX)(),(0,c.CE)("span",{key:t,class:"color-tag",style:(0,h.Tr)({background:s.getTagColor(t)})},(0,h.v_)(e),5))),128)),a.item.metadata.Tags.length>3?((0,c.uX)(),(0,c.CE)("span",{key:0,class:"color-tag color-tag-more",style:(0,h.Tr)({background:s.getTagColor(3)})},"+"+(0,h.v_)(a.item.metadata.Tags.length-3),5)):(0,c.Q3)("",!0)],64)):((0,c.uX)(),(0,c.CE)("span",zt,"-"))]),(0,c.Lk)("div",Ut,(0,h.v_)(s.isFolder?"-":a.item.metadata?.Channel||a.item.channelTag||"-"),1),(0,c.Lk)("div",Pt,[!s.isFolder&&a.item.metadata?.ChannelName?((0,c.uX)(),(0,c.CE)("div",Bt,(0,h.v_)(a.item.metadata.ChannelName),1)):((0,c.uX)(),(0,c.CE)("span",Wt,"-"))]),(0,c.Lk)("div",Rt,[!s.isFolder&&a.item.metadata?.UploadIP?((0,c.uX)(),(0,c.CE)("div",Ot,(0,h.v_)(a.item.metadata.UploadIP),1)):((0,c.uX)(),(0,c.CE)("span",Mt,"-"))]),(0,c.Lk)("div",Nt,(0,h.v_)(s.isFolder?"-":s.fileSizeDisplay),1),(0,c.Lk)("div",Vt,(0,h.v_)(s.uploadDate),1),(0,c.Lk)("div",Xt,[s.isFolder?((0,c.uX)(),(0,c.CE)(c.FK,{key:1},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("folderCopy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[6]||(t[6]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)):((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[(0,c.bF)(l,{content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[2]||(t[2]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["content"]),(0,c.bF)(l,{content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["content"])],64)),(0,c.bF)(l,{content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"list-action-btn list-action-danger",onClick:t[7]||(t[7]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["content"])])],32)}var Kt={name:"FileListItem",components:{DashboardCheckbox:St},props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,default:""}},emits:["update:selected","enter","detail","copy","folderCopy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,tagColors:["#f472b6","#a78bfa","#60a5fa","#34d399"]}},computed:{isFolder(){return this.item.isFolder||this.item.name?.endsWith("/")},isVideo(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".mp4")||e.endsWith(".webm")||e.endsWith(".mov")||e.endsWith(".avi")},isImage(){const e=this.item.name?.toLowerCase()||"";return e.endsWith(".jpg")||e.endsWith(".jpeg")||e.endsWith(".png")||e.endsWith(".gif")||e.endsWith(".webp")||e.endsWith(".svg")||e.endsWith(".bmp")},displayName(){if(this.isFolder){const e=this.item.name.split("/").filter(Boolean);return e[e.length-1]||this.item.name}return this.item.metadata?.FileName||this.getFileName(this.item.name)},fileNameStart(){const e=this.displayName;return e.length<=20?e:e.slice(0,-8)},fileNameEnd(){const e=this.displayName;return e.length<=20?"":e.slice(-8)},uploadDate(){return this.item.uploaded?new Date(this.item.uploaded).toLocaleDateString():this.item.metadata?.TimeStamp?new Date(this.item.metadata.TimeStamp).toLocaleDateString():"-"},fileSizeDisplay(){const e=this.item.metadata?.FileSizeBytes,t=this.item.metadata?.FileSize;return e?e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(2)} MB`:t?`${t} MB`:"-"}},watch:{selected(e){this.localSelected=e}},methods:{toggleSelect(){this.localSelected=!this.localSelected,this.$emit("update:selected",this.localSelected)},handlePreviewClick(){this.isFolder?this.$emit("enter"):this.$emit("detail")},getFileName(e){const t=(e||"").split("/");return t[t.length-1]},getTagColor(e){return this.tagColors[e%this.tagColors.length]}}};const Zt=(0,I.A)(Kt,[["render",jt],["__scopeId","data-v-4b029ac8"]]);var Gt=Zt,Ht=a(70683),qt=(a(95385),a(98469));a(38736);const Qt={class:"file-short-info"},Yt={key:0,class:"success-tag"},Jt={key:1,class:"fail-tag"},ea={key:2,class:"success-tag"},ta={key:3,class:"primary-tag"},aa={key:0,style:{"margin-left":"2px"}},ia={key:0,class:"skeleton-wrapper"},na={class:"error-text"},sa=["src"],ra={class:"error-text"},oa={key:3,class:"file-preview"},la={class:"card-bottom-overlay"},da={class:"file-name-row"},ca={class:"file-name"},ha={class:"action-bar"},ua={class:"action-bar-left"},fa={class:"action-bar-right"};function ma(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=Ze.Zq,d=ht.R7,u=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(u,{class:"img-card",onTouchstart:t[17]||(t[17]=t=>e.$emit("touchstart",t)),onTouchend:t[18]||(t[18]=t=>e.$emit("touchend",t)),onTouchmove:t[19]||(t[19]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",Qt,["White"===a.item.metadata?.ListType?((0,c.uX)(),(0,c.CE)("div",Yt,(0,h.v_)(s.channelTag),1)):"Block"===a.item.metadata?.ListType||"adult"===a.item.metadata?.Label?((0,c.uX)(),(0,c.CE)("div",Jt,(0,h.v_)(s.channelTag),1)):((0,c.uX)(),(0,c.CE)("div",ea,(0,h.v_)(s.channelTag),1)),a.item.metadata?.Tags&&a.item.metadata?.Tags.length>0?((0,c.uX)(),(0,c.CE)("div",ta,[(0,c.bF)(o,{icon:"tag",style:{"margin-right":"3px","font-size":"12px"}}),(0,c.eW)(" "+(0,h.v_)(a.item.metadata.Tags[0])+" ",1),a.item.metadata.Tags.length>1?((0,c.uX)(),(0,c.CE)("span",aa," (+"+(0,h.v_)(a.item.metadata.Tags.length-1)+") ",1)):(0,c.Q3)("",!0)])):(0,c.Q3)("",!0)]),s.isVideo?((0,c.uX)(),(0,c.CE)(c.FK,{key:0},[n.videoLoading?((0,c.uX)(),(0,c.CE)("div",ia)):n.videoError?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"error-wrapper",onClick:t[2]||(t[2]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"exclamation-triangle",class:"error-icon"}),(0,c.Lk)("span",na,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])):(0,c.Q3)("",!0),(0,c.bo)((0,c.Lk)("video",{src:a.fileLink,muted:"",loop:"",preload:"metadata",class:"video-preview",onClick:t[3]||(t[3]=(...e)=>s.handleVideoClick&&s.handleVideoClick(...e)),onMouseenter:t[4]||(t[4]=e=>s.handleVideoHover(e,!0)),onMouseleave:t[5]||(t[5]=e=>s.handleVideoHover(e,!1)),onFullscreenchange:t[6]||(t[6]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onWebkitfullscreenchange:t[7]||(t[7]=(...e)=>s.handleFullscreenChange&&s.handleFullscreenChange(...e)),onLoadeddata:t[8]||(t[8]=e=>n.videoLoading=!1),onError:t[9]||(t[9]=(...e)=>s.handleVideoError&&s.handleVideoError(...e))},null,40,sa),[[P.aG,!n.videoLoading&&!n.videoError]])],64)):s.isAudio?((0,c.uX)(),(0,c.CE)("div",{key:1,class:"file-preview audio-card-preview",onClick:t[10]||(t[10]=t=>e.$emit("detail"))},[(0,c.bF)(o,{icon:"music",class:"file-icon audio-icon"})])):s.isImage?((0,c.uX)(),(0,c.Wv)(l,{key:2,"preview-teleported":!0,src:a.fileLink,"preview-src-list":a.previewSrcList,fit:"cover",lazy:"",decoding:"async",class:"image-preview"},{placeholder:(0,c.k6)(()=>[...t[20]||(t[20]=[(0,c.Lk)("div",{class:"skeleton-wrapper"},null,-1)])]),error:(0,c.k6)(()=>[(0,c.Lk)("div",{class:"error-wrapper",onClick:t[11]||(t[11]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"image",class:"error-icon"}),(0,c.Lk)("span",ra,(0,h.v_)(e.$t("dashboard.loadFailed")),1)])]),_:1},8,["src","preview-src-list"])):((0,c.uX)(),(0,c.CE)("div",oa,[(0,c.bF)(o,{icon:"file",class:"file-icon"})])),(0,c.Lk)("div",la,[(0,c.Lk)("div",da,[(0,c.Lk)("span",ca,(0,h.v_)(s.displayName),1)]),(0,c.Lk)("div",ha,[(0,c.Lk)("div",ua,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.detail"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[12]||(t[12]=(0,P.D$)(t=>e.$emit("detail"),["stop"]))},[(0,c.bF)(o,{icon:"info-circle"})])]),_:1},8,["disabled","content"])]),(0,c.Lk)("div",fa,[(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[13]||(t[13]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[14]||(t[14]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.downloadFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[15]||(t[15]=(0,P.D$)(t=>e.$emit("download"),["stop"]))},[(0,c.bF)(o,{icon:"download"})])]),_:1},8,["disabled","content"]),(0,c.bF)(d,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[16]||(t[16]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"])])])])]),_:1})}var pa={name:"FileCard",props:{item:{type:Object,required:!0},selected:{type:Boolean,default:!1},fileLink:{type:String,required:!0},previewSrcList:{type:Array,default:()=>[]},disableTooltip:{type:Boolean,default:!1}},emits:["update:selected","detail","copy","move","delete","download","touchstart","touchend","touchmove"],data(){return{localSelected:this.selected,videoLoading:!0,videoError:!1}},computed:{channelTag(){return this.item.channelTag||""},isVideo(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("video"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".mov")||t.endsWith(".avi")},isAudio(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("audio"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".mp3")||t.endsWith(".wav")||t.endsWith(".ogg")||t.endsWith(".flac")},isImage(){const e=this.item.metadata?.FileType?.toLowerCase()||"";if(e.includes("image"))return!0;const t=this.item.name?.toLowerCase()||"";return t.endsWith(".jpg")||t.endsWith(".jpeg")||t.endsWith(".png")||t.endsWith(".gif")||t.endsWith(".webp")||t.endsWith(".svg")||t.endsWith(".bmp")||t.endsWith(".avif")||t.endsWith(".heic")||t.endsWith(".heif")},displayName(){const e=this.item.metadata?.FileName||this.item.name||"",t=e.split("/");return t[t.length-1]}},watch:{selected(e){this.localSelected=e},fileLink(){this.videoLoading=!0,this.videoError=!1}},methods:{handleVideoError(){this.videoLoading=!1,this.videoError=!0},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleFullscreenChange(e){const t=e.target,a=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement;a?(t.muted=!1,t.loop=!1):(t.muted=!0,t.loop=!0,t.pause(),t.currentTime=0)},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)}}};const ga=(0,I.A)(pa,[["render",ma],["__scopeId","data-v-12b39bad"]]);var ba=ga;const va={class:"card-bottom-overlay"},ka={class:"file-name-row"},ya={class:"file-name"},wa={key:0,class:"action-bar"},_a={class:"action-bar-right"};function Fa(e,t,a,i,n,s){const r=qt.dI,o=(0,c.g2)("font-awesome-icon"),l=ht.R7,d=Ht.Ik;return(0,c.uX)(),(0,c.Wv)(d,{class:"img-card folder-card",onTouchstart:t[6]||(t[6]=t=>e.$emit("touchstart",t)),onTouchend:t[7]||(t[7]=t=>e.$emit("touchend",t)),onTouchmove:t[8]||(t[8]=t=>e.$emit("touchmove",t))},{default:(0,c.k6)(()=>[(0,c.bF)(r,{modelValue:n.localSelected,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localSelected=e),onChange:t[1]||(t[1]=t=>e.$emit("update:selected",n.localSelected))},null,8,["modelValue"]),(0,c.Lk)("div",{class:"folder-icon",onClick:t[2]||(t[2]=t=>e.$emit("enter"))},[(0,c.bF)(o,{icon:"folder-open",class:"folder-icon-svg"})]),(0,c.Lk)("div",va,[(0,c.Lk)("div",ka,[(0,c.Lk)("span",ya,(0,h.v_)(s.folderName),1)]),a.showActions?((0,c.uX)(),(0,c.CE)("div",wa,[t[9]||(t[9]=(0,c.Lk)("div",{class:"action-bar-left"},null,-1)),(0,c.Lk)("div",_a,[(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.copyLink"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[3]||(t[3]=(0,P.D$)(t=>e.$emit("copy"),["stop"]))},[(0,c.bF)(o,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.moveFile"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn",onClick:t[4]||(t[4]=(0,P.D$)(t=>e.$emit("move"),["stop"]))},[(0,c.bF)(o,{icon:"file-export"})])]),_:1},8,["disabled","content"]),(0,c.bF)(l,{disabled:a.disableTooltip,content:e.$t("dashboard.delete"),placement:"top"},{default:(0,c.k6)(()=>[(0,c.Lk)("button",{class:"action-btn action-btn-danger",onClick:t[5]||(t[5]=(0,P.D$)(t=>e.$emit("delete"),["stop"]))},[(0,c.bF)(o,{icon:"trash-alt"})])]),_:1},8,["disabled","content"])])])):(0,c.Q3)("",!0)])]),_:1})}var Ca={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 Ta=(0,I.A)(Ca,[["render",Fa],["__scopeId","data-v-e3ec6a12"]]);var Sa=Ta;function $a(e,t,a,i,n,s){return"card"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:0},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"skeleton-"+e,class:"skeleton-card"},[...t[0]||(t[0]=[(0,c.Lk)("div",{class:"skeleton-image"},null,-1),(0,c.Lk)("div",{class:"skeleton-info"},[(0,c.Lk)("div",{class:"skeleton-text"})],-1)])]))),128)):"list"===a.type?((0,c.uX)(!0),(0,c.CE)(c.FK,{key:1},(0,c.pI)(a.count,e=>((0,c.uX)(),(0,c.CE)("div",{key:"list-skeleton-"+e,class:"list-item skeleton-list-item"},[...t[1]||(t[1]=[(0,c.Fv)('
',10)])]))),128)):(0,c.Q3)("",!0)}var La={name:"SkeletonLoader",props:{type:{type:String,default:"card",validator:e=>["card","list"].includes(e)},count:{type:Number,default:15}}};const xa=(0,I.A)(La,[["render",$a],["__scopeId","data-v-ef863880"]]);var Da=xa,Ea=a(81095),Aa=(a(77128),a(62086)),Ia=(a(40670),a(88830),a(23597),a(49187),a(77788));a(72099);const za={class:"el-dropdown-link filter-trigger"},Ua={class:"filter-section"},Pa={class:"filter-title"},Ba={class:"filter-options"},Wa={class:"filter-section"},Ra={class:"filter-title"},Oa={class:"filter-options"},Ma={class:"filter-section"},Na={class:"filter-title"},Va={class:"filter-options"},Xa={class:"filter-section"},ja={class:"filter-title"},Ka={class:"filter-options"},Za={class:"filter-section"},Ga={class:"filter-title"},Ha={class:"filter-options"},qa={key:0,class:"filter-section"},Qa={class:"filter-title"},Ya={class:"filter-options"},Ja={key:0,class:"channel-divider"},ei={class:"channel-group-title"},ti={class:"filter-actions"};function ai(e,t,a,i,n,s){const r=(0,c.g2)("font-awesome-icon"),o=Ia.z_,d=qt.dI,u=qt.o5,f=l.S2,m=Aa.Iy,p=Aa.dW;return(0,c.uX)(),(0,c.Wv)(p,{"hide-on-click":!1,trigger:"click",class:"filter-dropdown",ref:"dropdownRef"},{dropdown:(0,c.k6)(()=>[(0,c.bF)(m,{class:"filter-dropdown-menu"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Ua,[(0,c.Lk)("div",Pa,(0,h.v_)(e.$t("filter.accessStatus")),1),(0,c.Lk)("div",Ba,[(0,c.bF)(u,{modelValue:n.localFilters.accessStatus,"onUpdate:modelValue":t[0]||(t[0]=e=>n.localFilters.accessStatus=e),onChange:t[1]||(t[1]=e=>s.handleFilterChange("accessStatus"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.accessStatusOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"accessStatus-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Wa,[(0,c.Lk)("div",Ra,(0,h.v_)(e.$t("filter.blackWhiteList")),1),(0,c.Lk)("div",Oa,[(0,c.bF)(u,{modelValue:n.localFilters.listType,"onUpdate:modelValue":t[2]||(t[2]=e=>n.localFilters.listType=e),onChange:t[3]||(t[3]=e=>s.handleFilterChange("listType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.listTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"listType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Ma,[(0,c.Lk)("div",Na,(0,h.v_)(e.$t("filter.reviewResult")),1),(0,c.Lk)("div",Va,[(0,c.bF)(u,{modelValue:n.localFilters.label,"onUpdate:modelValue":t[4]||(t[4]=e=>n.localFilters.label=e),onChange:t[5]||(t[5]=e=>s.handleFilterChange("label"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.labelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"label-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Xa,[(0,c.Lk)("div",ja,(0,h.v_)(e.$t("filter.fileType")),1),(0,c.Lk)("div",Ka,[(0,c.bF)(u,{modelValue:n.localFilters.fileType,"onUpdate:modelValue":t[6]||(t[6]=e=>n.localFilters.fileType=e),onChange:t[7]||(t[7]=e=>s.handleFilterChange("fileType"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.fileTypeOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"fileType-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Za,[(0,c.Lk)("div",Ga,(0,h.v_)(e.$t("filter.channelType")),1),(0,c.Lk)("div",Ha,[(0,c.bF)(u,{modelValue:n.localFilters.channel,"onUpdate:modelValue":t[8]||(t[8]=e=>n.localFilters.channel=e),onChange:t[9]||(t[9]=e=>s.handleFilterChange("channel"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.channelOptions,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channel-"+e.value,label:e.value},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.label),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])])]),a.channelNameOptions.length>0?((0,c.uX)(),(0,c.CE)("div",qa,[(0,c.Lk)("div",Qa,(0,h.v_)(e.$t("filter.channelName")),1),(0,c.Lk)("div",Ya,[(0,c.bF)(u,{modelValue:n.localFilters.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>n.localFilters.channelName=e),onChange:t[11]||(t[11]=e=>s.handleFilterChange("channelName"))},{default:(0,c.k6)(()=>[((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(s.groupedChannelNames,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:"group-"+e.type},[t>0?((0,c.uX)(),(0,c.CE)("div",Ja)):(0,c.Q3)("",!0),(0,c.Lk)("div",ei,(0,h.v_)(e.typeLabel),1),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(e.channels,e=>((0,c.uX)(),(0,c.Wv)(d,{key:"channelName-"+e.type+"-"+e.name,label:e.type+":"+e.name},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.name),1)]),_:2},1032,["label"]))),128))],64))),128))]),_:1},8,["modelValue"])])])):(0,c.Q3)("",!0),(0,c.Lk)("div",ti,[(0,c.bF)(f,{size:"small",onClick:s.clearFilters,disabled:0===s.activeFilterCount},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("filter.clearFilters")),1)]),_:1},8,["onClick","disabled"])])]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",za,[(0,c.bF)(o,{value:s.activeFilterCount,hidden:0===s.activeFilterCount,class:"filter-badge"},{default:(0,c.k6)(()=>[(0,c.bF)(r,{icon:"filter",class:"header-icon"})]),_:1},8,["value","hidden"])])]),_:1},512)}a(7588),a(18237);var ii={name:"FilterDropdown",props:{filters:{type:Object,default:()=>({accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]})},channelNameOptions:{type:Array,default:()=>[]}},emits:["update:filters","change"],data(){return{localFilters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]}}},computed:{accessStatusOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.blocked"),value:"blocked"}]},listTypeOptions(){return[{label:this.$t("filter.whiteList"),value:"White"},{label:this.$t("filter.blackList"),value:"Block"},{label:this.$t("filter.notSet"),value:"None"}]},labelOptions(){return[{label:this.$t("filter.normal"),value:"normal"},{label:this.$t("filter.teenContent"),value:"teen"},{label:this.$t("filter.adultContent"),value:"adult"}]},fileTypeOptions(){return[{label:this.$t("filter.image"),value:"image"},{label:this.$t("filter.video"),value:"video"},{label:this.$t("filter.audio"),value:"audio"},{label:this.$t("filter.other"),value:"other"}]},channelOptions(){return[{label:"Telegram",value:"TelegramNew"},{label:"Cloudflare R2",value:"CloudflareR2"},{label:"S3",value:"S3"},{label:"Discord",value:"Discord"},{label:"HuggingFace",value:"HuggingFace"},{label:"WebDAV",value:"WebDAV"},{label:this.$t("filter.externalLink"),value:"External"}]},activeFilterCount(){return Object.values(this.localFilters).reduce((e,t)=>e+t.length,0)},groupedChannelNames(){const e={};return this.channelNameOptions.forEach(t=>{e[t.type]||(e[t.type]={type:t.type,typeLabel:t.typeLabel,channels:[]}),e[t.type].channels.push(t)}),Object.values(e)}},watch:{filters:{handler(e){this.localFilters={accessStatus:Array.isArray(e.accessStatus)?[...e.accessStatus]:[],listType:Array.isArray(e.listType)?[...e.listType]:[],label:Array.isArray(e.label)?[...e.label]:[],fileType:Array.isArray(e.fileType)?[...e.fileType]:[],channel:Array.isArray(e.channel)?[...e.channel]:[],channelName:Array.isArray(e.channelName)?[...e.channelName]:[]}},immediate:!0,deep:!0}},methods:{handleFilterChange(e){this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:e,filters:{...this.localFilters}})},clearFilters(){this.localFilters={accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},this.$emit("update:filters",{...this.localFilters}),this.$emit("change",{type:"clear",filters:{...this.localFilters}})}}};const ni=(0,I.A)(ii,[["render",ai],["__scopeId","data-v-e6a38b20"]]);var si=ni,ri=a(91570);const oi={class:"container"},li={class:"header-content"},di={class:"search-area"},ci={class:"search-card"},hi={class:"actions"},ui={class:"el-dropdown-link"},fi={class:"el-dropdown-link"},mi={class:"breadcrumb-container"},pi={class:"breadcrumb-view-toggle",role:"group"},gi=["title","aria-pressed"],bi=["title","aria-pressed"],vi={class:"mobile-directory-path"},ki={class:"breadcrumb desktop-only"},yi=["title"],wi={key:1,class:"empty-state"},_i={class:"empty-text"},Fi={class:"empty-hint"},Ci={class:"list-header"},Ti={class:"list-col list-col-checkbox"},Si={class:"list-col list-col-preview"},$i={class:"list-col list-col-name"},Li={class:"list-col list-col-tags"},xi={class:"list-col list-col-channel"},Di={class:"list-col list-col-channel-name"},Ei={class:"list-col list-col-address"},Ai={class:"list-col list-col-size"},Ii={class:"list-col list-col-date"},zi={class:"list-col list-col-actions"},Ui={key:1,class:"empty-state list-empty"},Pi={class:"empty-text"},Bi={class:"empty-hint"},Wi={class:"pagination-container"},Ri={class:"pagination-center"},Oi={class:"pagination-right"},Mi={class:"page-total"},Ni={class:"page-jump"},Vi={class:"dialog-section"},Xi={class:"section-header"},ji={class:"section-title"},Ki={class:"section-content"},Zi={class:"dialog-section"},Gi={class:"section-header"},Hi={class:"section-title"},qi={class:"section-content"},Qi={class:"setting-item"},Yi={class:"setting-label"},Ji={key:0,class:"setting-item"},en={class:"setting-label"},tn={class:"dialog-action"};function an(e,t,a,i,n,s){const o=ri.A,u=(0,c.g2)("font-awesome-icon"),f=d.WK,m=si,p=Aa.c6,g=Aa.Iy,b=Aa.dW,v=ht.R7,k=yt.bZ,y=St,w=Ea.WZ,_=Ea.vp,F=Da,C=Sa,T=ba,S=Gt,$=wt.aQ,L=l.S2,x=yt.ZO,D=yt.lX,E=kt,A=ct,I=Xe.ll,z=Xe.MQ,B=Ve.qi,W=r.kZ,R=Ne,O=Ce,M=Q,N=X,V=U;return(0,c.uX)(),(0,c.CE)("div",oi,[(0,c.bF)(D,null,{default:(0,c.k6)(()=>[(0,c.bF)(k,null,{default:(0,c.k6)(()=>[(0,c.Lk)("div",li,[(0,c.bF)(o,{activeTab:"dashboard"}),(0,c.Lk)("div",di,[(0,c.Lk)("div",ci,[(0,c.bF)(f,{modelValue:n.tempSearch,"onUpdate:modelValue":t[0]||(t[0]=e=>n.tempSearch=e),size:"small",placeholder:e.$t("dashboard.searchPlaceholder"),onKeyup:(0,P.jR)(s.handleSearch,["enter"])},{suffix:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"search",class:"search-icon",onClick:s.handleSearch},null,8,["onClick"])]),_:1},8,["modelValue","placeholder","onKeyup"])]),(0,c.bF)(m,{filters:n.filters,"onUpdate:filters":t[1]||(t[1]=e=>n.filters=e),channelNameOptions:n.channelNameOptions,onChange:s.handleFilterChange},null,8,["filters","channelNameOptions","onChange"])]),(0,c.Lk)("div",hi,[(0,c.bF)(b,{onCommand:s.sort,"hide-on-click":!1},{dropdown:(0,c.k6)(()=>[(0,c.bF)(g,null,{default:(0,c.k6)(()=>[(0,c.bF)(p,{command:"dateDesc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByDateDesc")),1)]),_:1}),(0,c.bF)(p,{command:"nameAsc"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.sortByNameAsc")),1)]),_:1})]),_:1})]),default:(0,c.k6)(()=>[(0,c.Lk)("span",ui,[(0,c.bF)(u,{icon:s.sortIcon,class:"header-icon"},null,8,["icon"])])]),_:1},8,["onCommand"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.linkFormat"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.Lk)("span",fi,[(0,c.bF)(u,{icon:"link",class:"header-icon",onClick:t[2]||(t[2]=e=>n.showUrlDialog=!0)})])]),_:1},8,["disabled","content"]),(0,c.bF)(v,{disabled:s.disableTooltip,content:e.$t("dashboard.logout"),placement:"bottom"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sign-out-alt",class:"header-icon",onClick:s.handleLogout},null,8,["onClick"])]),_:1},8,["disabled","content"])])])]),_:1}),(0,c.bF)(x,{class:(0,h.C4)(["main-container",{"has-batch-toolbar":n.selectedFiles.length>0}])},{default:(0,c.k6)(()=>[(0,c.Lk)("div",mi,[(0,c.bF)(y,{checked:s.selectPage,indeterminate:s.selectedPageFiles&&!s.selectPage,variant:"breadcrumb",onClick:s.handleSelectPage},null,8,["checked","indeterminate","onClick"]),(0,c.Lk)("div",pi,[(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"card"===n.viewMode}]),type:"button",title:e.$t("dashboard.cardView"),"aria-pressed":"card"===n.viewMode,onClick:t[3]||(t[3]=e=>s.setViewMode("card"))},[(0,c.bF)(u,{icon:"th-large",class:"breadcrumb-view-icon"})],10,gi),(0,c.Lk)("button",{class:(0,h.C4)(["breadcrumb-view-button",{"is-active":"list"===n.viewMode}]),type:"button",title:e.$t("dashboard.listView"),"aria-pressed":"list"===n.viewMode,onClick:t[4]||(t[4]=e=>s.setViewMode("list"))},[(0,c.bF)(u,{icon:"list",class:"breadcrumb-view-icon"})],10,bi)]),(0,c.Lk)("div",{class:"mobile-directory-trigger",onClick:t[5]||(t[5]=e=>n.showMobileDirectoryDrawer=!0)},[(0,c.bF)(u,{icon:"folder-open",class:"mobile-directory-icon"}),(0,c.Lk)("span",vi,(0,h.v_)(n.currentPath&&n.currentPath.split("/").filter(Boolean).length>0?n.currentPath.split("/").filter(Boolean).pop():e.$t("dashboard.rootDirectory")),1),(0,c.bF)(u,{icon:"chevron-down",class:"mobile-directory-arrow"})]),(0,c.Lk)("div",ki,[(0,c.bF)(_,{separator:"/"},{default:(0,c.k6)(()=>[(0,c.bF)(w,{onClick:t[6]||(t[6]=e=>s.navigateToFolder(""))},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"home",class:"breadcrumb-home-icon"})]),_:1}),((0,c.uX)(!0),(0,c.CE)(c.FK,null,(0,c.pI)(n.currentPath.split("/").filter(Boolean),(e,t)=>((0,c.uX)(),(0,c.Wv)(w,{key:t,onClick:e=>s.navigateToFolder(n.currentPath.split("/").filter(Boolean).slice(0,t+1).join("/"))},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e),1)]),_:2},1032,["onClick"]))),128))]),_:1})]),(0,c.Lk)("span",{class:"stats-badge",title:e.$t("dashboard.totalFiles",{count:e.$data.Number})},[(0,c.bF)(u,{icon:"database",class:"stats-badge-icon"}),(0,c.eW)(" "+(0,h.v_)(n.Number),1)],8,yi)]),"card"===n.viewMode?((0,c.uX)(),(0,c.CE)("div",{key:0,class:(0,h.C4)(["content",{"is-drag-selecting":i.isDragging}]),ref:"cardContainerRef",onTouchstartPassive:t[7]||(t[7]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[8]||(t[8]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[9]||(t[9]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"card",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",wi,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",_i,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Fi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.CE)(c.FK,{key:t},[s.isFolder(e)?((0,c.uX)(),(0,c.Wv)(C,{key:0,name:e.name,selected:e.selected,"onUpdate:selected":t=>e.selected=t,showActions:!n.isSearchMode,disableTooltip:s.disableTooltip,onEnter:t=>s.enterFolder(e.name),onCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onTouchstart:a=>s.handleFolderTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["name","selected","onUpdate:selected","showActions","disableTooltip","onEnter","onCopy","onMove","onDelete","onTouchstart","onTouchend","onTouchmove"])):((0,c.uX)(),(0,c.Wv)(T,{key:1,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),previewSrcList:e.previewSrcList,disableTooltip:s.disableTooltip,onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","previewSrcList","disableTooltip","onDetail","onCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))],64))),128))],34)):((0,c.uX)(),(0,c.CE)("div",{key:1,class:(0,h.C4)(["list-view",{"is-drag-selecting":i.isDragging}]),ref:"listContainerRef",onTouchstartPassive:t[11]||(t[11]=(...e)=>s.handlePageSwipeStart&&s.handlePageSwipeStart(...e)),onTouchendPassive:t[12]||(t[12]=(...e)=>s.handlePageSwipeEnd&&s.handlePageSwipeEnd(...e)),onTouchcancelPassive:t[13]||(t[13]=(...e)=>s.resetPageSwipe&&s.resetPageSwipe(...e))},[(0,c.Lk)("div",Ci,[(0,c.Lk)("div",Ti,[(0,c.bF)(y,{checked:s.isSelectAll,indeterminate:s.isIndeterminate,onClick:t[10]||(t[10]=e=>s.handleSelectAllPage(!s.isSelectAll))},null,8,["checked","indeterminate"])]),(0,c.Lk)("div",Si,(0,h.v_)(e.$t("dashboard.preview")),1),(0,c.Lk)("div",$i,(0,h.v_)(e.$t("dashboard.fileName")),1),(0,c.Lk)("div",Li,(0,h.v_)(e.$t("dashboard.tags")),1),(0,c.Lk)("div",xi,(0,h.v_)(e.$t("dashboard.channelType")),1),(0,c.Lk)("div",Di,(0,h.v_)(e.$t("dashboard.channelNameCol")),1),(0,c.Lk)("div",Ei,(0,h.v_)(e.$t("dashboard.uploadAddress")),1),(0,c.Lk)("div",Ai,(0,h.v_)(e.$t("dashboard.fileSize")),1),(0,c.Lk)("div",Ii,(0,h.v_)(e.$t("dashboard.uploadTime")),1),(0,c.Lk)("div",zi,(0,h.v_)(e.$t("dashboard.actions")),1)]),n.loading?((0,c.uX)(),(0,c.Wv)(F,{key:0,type:"list",count:n.pageSize},null,8,["count"])):0===s.paginatedTableData.length?((0,c.uX)(),(0,c.CE)("div",Ui,[(0,c.bF)(u,{icon:"folder-open",class:"empty-icon"}),(0,c.Lk)("p",Pi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.noMatchingFiles"):e.$t("dashboard.currentDirEmpty")),1),(0,c.Lk)("p",Bi,(0,h.v_)(s.hasSearchOrFilter?e.$t("dashboard.adjustSearchHint"):e.$t("dashboard.uploadHint")),1)])):((0,c.uX)(!0),(0,c.CE)(c.FK,{key:2},(0,c.pI)(s.paginatedTableData,(e,t)=>((0,c.uX)(),(0,c.Wv)(S,{key:t,item:e,selected:e.selected,"onUpdate:selected":t=>e.selected=t,fileLink:s.getFileLink(e.name),onEnter:t=>s.enterFolder(e.name),onDetail:a=>s.openDetailDialog(t,e.name),onCopy:a=>s.handleCopy(t,e.name),onFolderCopy:t=>s.handleFolderCopy(e.name),onMove:a=>s.handleMove(t,e.name),onDelete:a=>s.handleDelete(t,e.name),onDownload:t=>s.handleDownload(e.name),onTouchstart:a=>s.isFolder(e)?s.handleFolderTouchStart(e,t):s.handleTouchStart(e,t),onTouchend:s.handleTouchEnd,onTouchmove:s.handleTouchEnd},null,8,["item","selected","onUpdate:selected","fileLink","onEnter","onDetail","onCopy","onFolderCopy","onMove","onDelete","onDownload","onTouchstart","onTouchend","onTouchmove"]))),128))],34)),i.isDragging?((0,c.uX)(),(0,c.CE)("div",{key:2,class:"drag-select-overlay",style:(0,h.Tr)({position:"fixed",left:i.selectionRect.left+"px",top:i.selectionRect.top+"px",width:i.selectionRect.width+"px",height:i.selectionRect.height+"px"})},null,4)):(0,c.Q3)("",!0),(0,c.Lk)("div",Wi,[(0,c.Lk)("div",Ri,[(0,c.bF)($,{background:"",layout:"prev, pager, next",total:s.filteredTableData.length,"page-size":n.pageSize,"current-page":n.currentPage,"pager-count":s.pagerCount,onCurrentChange:s.handlePageChange},null,8,["total","page-size","current-page","pager-count","onCurrentChange"]),(0,c.bF)(L,{type:"primary",onClick:s.refreshFileList,class:"refresh-btn"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"sync",class:(0,h.C4)({"fa-spin":n.refreshLoading})},null,8,["class"])]),_:1},8,["onClick"]),n.currentPage===Math.ceil(s.filteredTableData.length/n.pageSize)?((0,c.uX)(),(0,c.Wv)(L,{key:0,type:"primary",onClick:s.loadMoreData,loading:n.loading,class:"load-more"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("dashboard.loadMore")),1)]),_:1},8,["onClick","loading"])):(0,c.Q3)("",!0)]),(0,c.Lk)("div",Oi,[(0,c.Lk)("span",Mi,(0,h.v_)(e.$t("dashboard.totalPages",{count:s.realTotalPages})),1),(0,c.Lk)("div",Ni,[(0,c.Lk)("span",null,(0,h.v_)(e.$t("dashboard.jumpTo")),1),(0,c.bF)(f,{modelValue:n.jumpPage,"onUpdate:modelValue":t[14]||(t[14]=e=>n.jumpPage=e),size:"small",class:"jump-input",onKeyup:(0,P.jR)(s.handleJumpPage,["enter"])},null,8,["modelValue","onKeyup"]),(0,c.bF)(L,{size:"small",type:"primary",onClick:s.handleJumpPage,class:"jump-btn"},{default:(0,c.k6)(()=>[...t[31]||(t[31]=[(0,c.eW)("GO",-1)])]),_:1},8,["onClick"])])])])]),_:1},8,["class"])]),_:1}),(0,c.bF)(E,{"selected-count":n.selectedFiles.length,onAction:s.handleBatchAction,onClear:s.clearSelection},null,8,["selected-count","onAction","onClear"]),(0,c.bF)(A,{modelValue:n.showdetailDialog,"onUpdate:modelValue":t[15]||(t[15]=e=>n.showdetailDialog=e),file:n.detailFile,fileLink:s.getFileLink(n.detailFile?.name),urls:s.allUrl,onDownload:t[16]||(t[16]=e=>s.handleDownload(n.detailFile?.name)),onTagManagement:t[17]||(t[17]=e=>s.handleTagManagement(n.detailFile?.name)),onBlock:t[18]||(t[18]=e=>s.handleBlock(n.detailFile?.name)),onWhite:t[19]||(t[19]=e=>s.handleWhite(n.detailFile?.name)),onDelete:t[20]||(t[20]=e=>s.handleDetailDelete(n.detailFile?.name)),onMetadataUpdated:s.handleMetadataUpdated,onFileRenamed:s.handleFileRenamed},null,8,["modelValue","file","fileLink","urls","onMetadataUpdated","onFileRenamed"]),(0,c.bF)(W,{title:e.$t("dashboard.linkFormat"),modelValue:n.showUrlDialog,"onUpdate:modelValue":t[25]||(t[25]=e=>n.showUrlDialog=e),width:s.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,c.k6)(()=>[(0,c.Lk)("div",Vi,[(0,c.Lk)("div",Xi,[(0,c.Lk)("span",ji,(0,h.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,c.Lk)("div",Ki,[(0,c.bF)(z,{modelValue:n.defaultUrlFormat,"onUpdate:modelValue":t[21]||(t[21]=e=>n.defaultUrlFormat=e),class:"radio-card-group grid-2x2"},{default:(0,c.k6)(()=>[(0,c.bF)(I,{label:"originUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"link",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,c.bF)(I,{label:"mdUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code",class:"radio-icon"}),t[32]||(t[32]=(0,c.Lk)("span",null,"Markdown",-1))]),_:1}),(0,c.bF)(I,{label:"htmlUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[33]||(t[33]=(0,c.Lk)("span",null,"HTML",-1))]),_:1}),(0,c.bF)(I,{label:"bbUrl",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[34]||(t[34]=(0,c.Lk)("span",null,"BBCode",-1))]),_:1}),(0,c.bF)(I,{label:"tgId",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"paper-plane",class:"radio-icon"}),t[35]||(t[35]=(0,c.Lk)("span",null,"TG File ID",-1))]),_:1}),(0,c.bF)(I,{label:"s3Location",class:"radio-card"},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"cloud",class:"radio-icon"}),(0,c.Lk)("span",null,(0,h.v_)(e.$t("settings.s3Link")),1)]),_:1})]),_:1},8,["modelValue"])])]),(0,c.Lk)("div",Zi,[(0,c.Lk)("div",Gi,[(0,c.Lk)("span",Hi,(0,h.v_)(e.$t("settings.customLink")),1),(0,c.bF)(v,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,c.k6)(()=>[(0,c.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,c.Lk)("div",qi,[(0,c.Lk)("div",Qi,[(0,c.Lk)("span",Yi,(0,h.v_)(e.$t("settings.enableCustom")),1),(0,c.bF)(B,{modelValue:n.useCustomUrl,"onUpdate:modelValue":t[22]||(t[22]=e=>n.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===n.useCustomUrl?((0,c.uX)(),(0,c.CE)("div",Ji,[(0,c.Lk)("span",en,(0,h.v_)(e.$t("settings.customPrefix")),1),(0,c.bF)(f,{modelValue:n.customUrlPrefix,"onUpdate:modelValue":t[23]||(t[23]=e=>n.customUrlPrefix=e),placeholder:e.$t("settings.customPrefixPlaceholder"),class:"setting-input"},null,8,["modelValue","placeholder"])])):(0,c.Q3)("",!0)])]),(0,c.Lk)("div",tn,[(0,c.bF)(L,{type:"primary",onClick:t[24]||(t[24]=e=>n.showUrlDialog=!1),class:"confirm-btn"},{default:(0,c.k6)(()=>[(0,c.eW)((0,h.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,c.bF)(R,{modelValue:n.showTagDialog,"onUpdate:modelValue":t[26]||(t[26]=e=>n.showTagDialog=e),fileId:n.currentTagFile,onTagsUpdated:s.handleTagsUpdated},null,8,["modelValue","fileId","onTagsUpdated"]),(0,c.bF)(O,{modelValue:n.showBatchTagDialog,"onUpdate:modelValue":t[27]||(t[27]=e=>n.showBatchTagDialog=e),selectedFiles:n.selectedFiles,onTagsUpdated:s.handleBatchTagsUpdated},null,8,["modelValue","selectedFiles","onTagsUpdated"]),(0,c.bF)(M,{modelValue:n.showMobileActionModal,"onUpdate:modelValue":t[28]||(t[28]=e=>n.showMobileActionModal=e),title:n.mobileActionIsFolder?s.getFolderName(n.mobileActionFile?.name||""):n.mobileActionFile?.metadata?.FileName||s.getFileName(n.mobileActionFile?.name||""),isFolder:n.mobileActionIsFolder,onAction:s.handleMobileAction},null,8,["modelValue","title","isFolder","onAction"]),(0,c.bF)(N,{modelValue:n.showMobileDirectoryDrawer,"onUpdate:modelValue":t[29]||(t[29]=e=>n.showMobileDirectoryDrawer=e),currentPath:n.currentPath,onNavigate:s.navigateToFolder,onGoBack:s.handleGoBack},null,8,["modelValue","currentPath","onNavigate","onGoBack"]),(0,c.bF)(V,{modelValue:n.showMoveDialog,"onUpdate:modelValue":t[30]||(t[30]=e=>n.showMoveDialog=e),"current-directory":n.currentPath,"is-batch-move":n.isBatchMove,"initial-path":n.moveTargetPath,onConfirm:s.confirmMove},null,8,["modelValue","current-directory","is-batch-move","initial-path","onConfirm"])])}a(81148),a(20116),a(13579),a(17642),a(58004),a(33853),a(45876),a(32475),a(15024),a(31698);var nn=a(60782),sn=a(44813),rn=a.n(sn),on=a(54047),ln=a(46638);class dn{constructor(){this.FILE_LIST_PATH="data/fileList.json",this.fileListCache=null,this.storageWarningShown=!1}getLocalFileList(){const e=this.getMutableFileList();return{...e,files:[...e.files||[]],directories:[...e.directories||[]]}}getMutableFileList(){if(this.fileListCache)return this.fileListCache;try{const e=localStorage.getItem(this.FILE_LIST_PATH);return this.fileListCache=e?JSON.parse(e):this.createEmptyFileList(),this.fileListCache}catch(e){return console.error("Error reading local file list:",e),this.fileListCache=this.createEmptyFileList(),this.fileListCache}}updateFileListCache(e){this.fileListCache=e||this.createEmptyFileList();const t=this.persistFileListCache();return{cacheUpdated:!0,persisted:t}}persistFileListCache(){try{return localStorage.setItem(this.FILE_LIST_PATH,JSON.stringify(this.fileListCache)),!0}catch(e){return this.handleStoragePersistError(e),!1}}createEmptyFileList(){return{files:[],directories:[]}}handleStoragePersistError(e){console.warn("File list is kept in memory because localStorage persistence failed:",e);try{localStorage.removeItem(this.FILE_LIST_PATH)}catch(t){console.warn("Failed to remove stale file list cache:",t)}this.storageWarningShown||(this.storageWarningShown=!0,ye.nk.warning(ln.Ay.global.t("dashboard.fileListMemoryCacheWarning")))}addFile(e){try{const t=this.getMutableFileList();return t.files.push(e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error adding file:",t),!1}}addFolder(e){try{const t=this.getMutableFileList();return!t.directories.includes(e)&&(t.directories.push(e),this.updateFileListCache(t).cacheUpdated)}catch(t){return console.error("Error adding folder:",t),!1}}moveFile(e,t,a=!1,i=""){try{let n=this.getMutableFileList();if(a){const t=n.directories.indexOf(e);-1!==t&&n.directories.splice(t,1)}else{const t=n.files.findIndex(t=>t.name===e);-1!==t&&n.files.splice(t,1)}if(t.startsWith(i)){const e=t.substring(i.length).split("/");if(e.length>1){const t=i+e[0];n.directories.includes(t)||n.directories.push(t)}}return this.updateFileListCache(n).cacheUpdated}catch(n){return console.error("Error moving file:",n),!1}}removeFile(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>t.name!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing file:",t),!1}}removeFolder(e){try{let t=this.getMutableFileList();return t.files=t.files.filter(t=>!t.name.startsWith(e+"/")),t.directories=t.directories.filter(t=>t!==e),this.updateFileListCache(t).cacheUpdated}catch(t){return console.error("Error removing folder:",t),!1}}getFilesInFolder(e){try{const t=this.getMutableFileList(),a=t.files.filter(t=>t.name.startsWith(e+"/")),i=t.directories.filter(t=>t.startsWith(e+"/"));return{files:a,directories:i}}catch(t){return console.error("Error getting files in folder:",t),{files:[],directories:[]}}}buildFilterParams(e){let t="";return e.accessStatus&&e.accessStatus.length>0&&(t+=`&accessStatus=${encodeURIComponent(e.accessStatus.join(","))}`),e.listType&&e.listType.length>0&&(t+=`&listType=${encodeURIComponent(e.listType.join(","))}`),e.label&&e.label.length>0&&(t+=`&label=${encodeURIComponent(e.label.join(","))}`),e.fileType&&e.fileType.length>0&&(t+=`&fileType=${encodeURIComponent(e.fileType.join(","))}`),e.channel&&e.channel.length>0&&(t+=`&channel=${encodeURIComponent(e.channel.join(","))}`),e.channelName&&e.channelName.length>0&&(t+=`&channelName=${encodeURIComponent(e.channelName.join(","))}`),t}async refreshFileList(e,t="",a="",i="",n={}){t=t.trim();try{let s=`/api/manage/list?count=60&dir=${e}&search=${encodeURIComponent(t)}`;a&&(s+=`&includeTags=${encodeURIComponent(a)}`),i&&(s+=`&excludeTags=${encodeURIComponent(i)}`),s+=this.buildFilterParams(n);const r=await(0,E.A)(s,{method:"GET"}),o=await r.json();return o.isIndexedResponse||ye.nk.warning(ln.Ay.global.t("dashboard.indexingWarning")),this.updateFileListCache(o).cacheUpdated}catch(s){return console.error("Error refreshing file list:",s),!1}}async loadMoreFiles(e,t="",a="",i="",n=60,s={}){t=t.trim();try{const r=this.getMutableFileList(),o=r.files.length;let l=`/api/manage/list?dir=${e}&start=${o}&count=${n}&search=${encodeURIComponent(t)}`;a&&(l+=`&includeTags=${encodeURIComponent(a)}`),i&&(l+=`&excludeTags=${encodeURIComponent(i)}`),l+=this.buildFilterParams(s);const d=await(0,E.A)(l,{method:"GET"}),c=await d.json();return r.files.push(...c.files),this.updateFileListCache(r).cacheUpdated}catch(r){return console.error("Error loading more files:",r),{files:[],directories:[]}}}}const cn=new dn;var hn=a(62388),un=a(48903),fn=a(90144);function mn(e,t){return!(e.right<=t.left||e.left>=t.right||e.bottom<=t.top||e.top>=t.bottom)}function pn(e,t){const a=Math.min(e.x,t.x),i=Math.min(e.y,t.y),n=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);return{left:a,top:i,width:n,height:s,right:a+n,bottom:i+s}}function gn(e){const{modes:t,mainSelector:a=".main-container",viewMode:i,items:n}=e,s=(0,fn.KR)(!1),r=(0,fn.KR)({left:0,top:0,width:0,height:0,right:0,bottom:0});let o=null,l=[],d=!1;const h=768;let u=!1;const f=50,m=10;let p=null,g="";function b(){const e=(0,fn.BA)(i);return t[e]||void 0}function v(){const e=(0,fn.BA)(i);return("card"===e||"list"===e)&&window.innerWidth>h}function k(){v()?u||A():u&&(z(),I())}function y(e){const t=e.target,i=t.closest(a);if(!i)return!1;const n=b();if(n){const e=t.closest(n.itemSelector);if(e){const t=(0,fn.BA)(n.containerRef);if(t&&t.contains(e))return!1}}const s=t.closest("button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container");return!s}function w(e){return e.shiftKey||e.ctrlKey||e.metaKey}function _(){const e=(0,fn.BA)(n);l=e.map(e=>!!e.selected)}let F=0;function C(){function e(){const t=window.innerHeight;let a=0;F>=t-f?a=m:F<=f&&(a=-m),0!==a&&(window.scrollBy(0,a),o&&(o.y-=a,r.value=pn(o,{x:r.value.right>=o.x?r.value.right:r.value.left,y:F}),L())),p=requestAnimationFrame(e)}null===p&&(p=requestAnimationFrame(e))}function T(){null!==p&&(cancelAnimationFrame(p),p=null)}function S(){g=document.body.style.userSelect,document.body.style.userSelect="none"}function $(){document.body.style.userSelect=g}function L(){const e=b();if(!e)return;const t=(0,fn.BA)(e.containerRef);if(!t)return;const a=(0,fn.BA)(n),i=r.value,s={left:i.left,top:i.top,right:i.right,bottom:i.bottom},o=t.querySelectorAll(e.itemSelector);a.forEach((e,t)=>{const a=o[t];if(!a)return;const i=a.getBoundingClientRect(),n={left:i.left,top:i.top,right:i.right,bottom:i.bottom},r=mn(s,n);d&&l[t]?e.selected=!0:e.selected=r})}function x(e){if(0===e.button&&y(e)){if(o={x:e.clientX,y:e.clientY},d=w(e),_(),!d){const e=(0,fn.BA)(n);e.forEach(e=>{e.selected=!1})}s.value=!0,r.value=pn(o,o),S(),document.addEventListener("mousemove",D),document.addEventListener("mouseup",E)}}function D(e){if(!s.value||!o)return;const t={x:e.clientX,y:e.clientY};F=e.clientY,r.value=pn(o,t),L();const a=window.innerHeight;F<=f||F>=a-f?C():T()}function E(e){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function A(){u||(document.addEventListener("mousedown",x),u=!0)}function I(){u&&(document.removeEventListener("mousedown",x),u=!1)}function z(){s.value&&(T(),$(),s.value=!1,r.value={left:0,top:0,width:0,height:0,right:0,bottom:0},o=null,document.removeEventListener("mousemove",D),document.removeEventListener("mouseup",E))}function U(){k()}return(0,c.wB)(()=>(0,fn.BA)(i),()=>{z(),k()}),(0,c.sV)(()=>{v()&&A(),window.addEventListener("resize",U)}),(0,c.xo)(()=>{z(),$(),T(),I(),window.removeEventListener("resize",U)}),{isDragging:s,selectionRect:r}}var bn={name:"AdminDashBoard",mixins:[un.A],data(){return{Number:0,directFileCount:0,directFolderCount:0,showLogoutButton:!1,tableData:[],tempSearch:"",search:"",searchKeywords:"",searchIncludeTags:"",searchExcludeTags:"",isSearchMode:!1,currentPage:1,pageSize:15,selectedFiles:[],sortOption:"dateDesc",isUploading:!1,showdetailDialog:!1,detailFile:null,activeUrlTab:"originUrl",defaultUrlFormat:"originUrl",showUrlDialog:!1,useCustomUrl:"false",customUrlPrefix:"",loading:!1,currentPath:"",refreshLoading:!1,showTagDialog:!1,showBatchTagDialog:!1,currentTagFile:"",viewMode:"card",showMobileActionModal:!1,mobileActionFile:null,mobileActionIndex:-1,mobileActionIsFolder:!1,longPressTimer:null,showMobileDirectoryDrawer:!1,jumpPage:"",filters:{accessStatus:[],listType:[],label:[],fileType:[],channel:[],channelName:[]},channelNameOptions:[],showMoveDialog:!1,moveTargetPath:"/",moveFileKey:"",moveFileIndex:-1,isBatchMove:!1,pageSwipeStartX:null,pageSwipeStartY:null,pageSwipeStartTime:0}},components:{DashboardTabs:ri.A,TagManagementDialog:Ne,BatchTagDialog:Ce,SkeletonLoader:Da,FileCard:ba,FolderCard:Sa,FileListItem:Gt,FileDetailDialog:ct,BatchActionBar:kt,MobileActionSheet:Q,MobileDirectoryDrawer:X,DashboardCheckbox:St,FilterDropdown:si,MoveFileDialog:U,LanguageSwitcher:on.A},setup(){const e=(0,fn.KR)(null),t=(0,fn.KR)(null),a=(0,fn.KR)("card"),i=(0,fn.KR)([]),{isDragging:n,selectionRect:s}=gn({modes:{card:{containerRef:e,itemSelector:".img-card"},list:{containerRef:t,itemSelector:".list-item"}},viewMode:a,items:i});return{cardContainerRef:e,listContainerRef:t,viewModeRef:a,itemsRef:i,isDragging:n,selectionRect:s}},computed:{...(0,nn.L8)(["adminUrlSettings","userConfig"]),filteredTableData(){return this.tableData},totalPages(){return Math.ceil(this.filteredTableData.length/this.pageSize)||1},realTotalPages(){const e=this.directFolderCount+this.directFileCount;return Math.ceil(e/this.pageSize)||1},activeFilterCount(){return Object.values(this.filters).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0)},hasSearchOrFilter(){return this.isSearchMode||this.activeFilterCount>0},paginatedTableData(){const e=this.sortData(this.filteredTableData),t=(this.currentPage-1)*this.pageSize,a=t+this.pageSize;let i=e.slice(t,a);const n=i.filter(e=>this.isImage(e)).map(e=>this.getFileLink(e.name));return i.forEach(e=>{this.isImage(e)&&(e.previewSrcList=n.slice(n.indexOf(this.getFileLink(e.name))).concat(n.slice(0,n.indexOf(this.getFileLink(e.name)))))}),i.forEach(e=>{"TelegramNew"===e.metadata?.Channel||"Telegram"===e.metadata?.Channel?e.channelTag="TG":"CloudflareR2"===e.metadata?.Channel?e.channelTag="R2":"S3"===e.metadata?.Channel?e.channelTag="S3":"Discord"===e.metadata?.Channel?e.channelTag="DC":"HuggingFace"===e.metadata?.Channel?e.channelTag="HF":"WebDAV"===e.metadata?.Channel?e.channelTag="WD":"External"===e.metadata?.Channel?e.channelTag=this.$t("dashboard.externalTag"):e.channelTag=this.$t("dashboard.unknownTag")}),i},sortIcon(){return"dateDesc"===this.sortOption?"sort-amount-down":"sort-alpha-up"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},detailDialogWidth(){return window.innerWidth>768?"70%":"90%"},accessType(){return"White"===this.detailFile?.metadata?.ListType?this.$t("filter.normal"):"Block"===this.detailFile?.metadata?.ListType||"adult"===this.detailFile?.metadata?.Label?this.$t("filter.blocked"):this.$t("filter.normal")},allUrl(){return"External"===this.detailFile?.metadata?.Channel?{originUrl:`${this.detailFile?.metadata?.ExternalLink}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}:{originUrl:`${this.rootUrl}${this.detailFile?.name}`,mdUrl:`![${this.detailFile?.metadata?.FileName||this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,htmlUrl:`${this.detailFile?.metadata?.FileName||this.detailFile?.name}`,bbUrl:`[img]${this.rootUrl}${this.detailFile?.name}[/img]`,tgId:this.detailFile?.metadata?.TgFileId||this.$t("fileDetail.unknown"),S3Location:this.detailFile?.metadata?.S3Location||this.$t("fileDetail.unknown"),S3CdnFileUrl:this.detailFile?.metadata?.S3CdnFileUrl||this.$t("fileDetail.unknown")}},tableColumnNum(){return window.innerWidth>768?3:1},tablePreviewSpan(){return window.innerWidth>768?2:1},disableTooltip(){return window.innerWidth<768},selectPage(){return this.paginatedTableData.every(e=>e.selected)},selectedPageFiles(){return this.paginatedTableData.some(e=>e.selected)},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:{setViewMode(e){this.viewMode!==e&&(this.viewMode=e,localStorage.setItem("viewMode",this.viewMode))},handleSelectAllPage(e){this.paginatedTableData.forEach(t=>t.selected=e)},handleTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!1,this.showMobileActionModal=!0},500)},handleTouchEnd(){this.longPressTimer&&(clearTimeout(this.longPressTimer),this.longPressTimer=null)},handleFolderTouchStart(e,t){this.longPressTimer=setTimeout(()=>{this.mobileActionFile=e,this.mobileActionIndex=t,this.mobileActionIsFolder=!0,this.showMobileActionModal=!0},500)},handleMobileAction(e){const t=this.mobileActionFile,a=this.mobileActionIndex;if(this.showMobileActionModal=!1,t)switch(e){case"detail":this.openDetailDialog(a,t.name);break;case"copy":this.handleCopy(a,t.name);break;case"folderCopy":this.handleFolderCopy(t.name);break;case"download":this.handleDownload(t.name);break;case"move":this.handleMove(a,t.name);break;case"delete":this.handleDelete(a,t.name);break;case"tag":this.handleTagManagement(t.name);break}},handleGoBack(){const e=this.currentPath.split("/").filter(Boolean);if(e.length>0){e.pop();const t=e.join("/");this.navigateToFolder(t)}this.showMobileDirectoryDrawer=!1},getTagColor(e){const t=["linear-gradient(135deg, #667eea 0%, #764ba2 100%)","linear-gradient(135deg, #f093fb 0%, #f5576c 100%)","linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)","linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)","linear-gradient(135deg, #fa709a 0%, #fee140 100%)","linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)"];return t[e%t.length]},handleVideoHover(e,t){const a=e.target;t?a.play().catch(()=>{}):(a.pause(),a.currentTime=0)},formatFileSize(e){if(!e||0===e)return"-";if(e=Number(e),isNaN(e))return"-";const t=["B","KB","MB","GB","TB"];let a=0;while(e>=1024&&a0?1:0)+" "+t[a]},handleSearch(){if(this.search=this.tempSearch,this.isSearchMode=""!==this.search.trim(),this.currentPage=1,this.search&&this.search.trim()){const e=[],t=[];let a=this.search;const i=/-#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(i,(e,a)=>(t.push(a.toLowerCase())," "));const n=/#([\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af\.\+\-]+)/g;a=a.replace(n,(t,a)=>(e.push(a.toLowerCase())," ")),this.searchKeywords=a.replace(/\s+/g," ").trim(),this.searchIncludeTags=e.join(","),this.searchExcludeTags=t.join(","),console.log("Search keywords:",this.searchKeywords),console.log("Include tags:",this.searchIncludeTags),console.log("Exclude tags:",this.searchExcludeTags)}else this.searchKeywords="",this.searchIncludeTags="",this.searchExcludeTags="";this.refreshFileList()},handleFilterChange({type:e,filters:t}){this.filters=t,this.currentPage=1,this.refreshFileList()},clearFilters(){this.filters={listType:[],label:[],fileType:[],channel:[],channelName:[]},this.currentPage=1,this.refreshFileList()},async extractChannelNames(){try{const e=await(0,E.A)("/api/channels?includeDisabled=true",{method:"GET"});if(e.ok){const t=await e.json(),a=[],i={telegram:"Telegram",cfr2:"Cloudflare R2",s3:"S3",discord:"Discord",huggingface:"HuggingFace",webdav:"WebDAV"};Object.entries(t).forEach(([e,t])=>{Array.isArray(t)&&t.length>0&&t.forEach(t=>{t.name&&a.push({name:t.name,type:t.type,typeLabel:i[e]||e,value:`${t.type}:${t.name}`})})}),a.sort((e,t)=>e.type!==t.type?e.type.localeCompare(t.type):e.name.localeCompare(t.name)),this.channelNameOptions=a}}catch(e){console.error("Failed to fetch channel names:",e)}},handleDownload(e){const t=document.createElement("a");t.href=this.getFileLink(e),t.download=e,t.click()},openDetailDialog(e,t){this.detailFile=this.paginatedTableData[e],this.showdetailDialog=!0},handleTabClick(e){this.activeUrlTab=e.props.name},handleUrlClick(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:this.$t("dashboard.copySuccess")})}).catch(()=>{this.$message({type:"error",message:this.$t("dashboard.copyFailed")})})},handleDetailDelete(e){this.$confirm(this.$t("dashboard.deleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&this.tableData.splice(t,1)}}).then(()=>{this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.deleteSuccess")),this.showdetailDialog=!1}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBlock(e){this.$confirm(this.$t("dashboard.blockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/block/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="Block")}}).then(()=>{this.$message.success(this.$t("dashboard.blockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.blockFailed")))}).catch(()=>console.log("Block cancelled"))},handleWhite(e){this.$confirm(this.$t("dashboard.whiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/white/${e}`,{method:"GET"}).then(t=>{if(!t.ok)return Promise.reject("Request failed");{const t=this.tableData.findIndex(t=>t.name===e);-1!==t&&(this.tableData[t].metadata.ListType="White")}}).then(()=>{this.$message.success(this.$t("dashboard.whiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.whiteFailed")))}).catch(()=>console.log("White cancelled"))},handleDelete(e,t){const a=this.tableData.find(e=>e.name===t).isFolder;this.$confirm(a?this.$t("dashboard.deleteFolderConfirm"):this.$t("dashboard.deleteFileConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{(0,E.A)(`/api/manage/delete/${t}?folder=${a}`,{method:"GET"}).then(e=>{if(!e.ok)return Promise.reject("Request failed");{const e=this.tableData.findIndex(e=>e.name===t);-1!==e&&this.tableData.splice(e,1)}}).then(()=>{this.updateStats(-1,!1),cn.removeFile(t),this.$message.success(this.$t("dashboard.deleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.deleteFailed")))}).catch(()=>console.log("Delete cancelled"))},handleBatchDelete(){this.$confirm(this.$t("dashboard.batchDeleteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>{const t=e.isFolder;return(0,E.A)(`/api/manage/delete/${e.name}?folder=${t}`,{method:"GET"})});Promise.all(e).then(e=>{let t=0;e.forEach((e,a)=>{if(e.ok){t++;const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[a].name);-1!==e&&this.tableData.splice(e,1),cn.removeFile(this.selectedFiles[a].name)}}),this.selectedFiles=[],this.updateStats(-t,!1),this.$message.success(this.$t("dashboard.batchDeleteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchDeleteFailed")))}).catch(()=>console.log("Batch delete cancelled"))},async handleBatchCopy(){const e=this.selectedFiles.filter(e=>!e.isFolder),t=this.selectedFiles.filter(e=>e.isFolder);let a=null;t.length>0&&(a=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")}));try{let n=[...e];for(const e of t)try{const t=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e.name)}&recursive=true&count=-1`,{method:"GET"}),a=await t.json();a.files&&a.files.length>0&&(n=n.concat(a.files))}catch(i){console.error(`获取文件夹 ${e.name} 内容失败:`,i)}if(a&&a.close(),0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===s.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const r=s.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(r),this.$message.success(this.$t("dashboard.batchCopySuccess",{count:s.length}))):this.copyToClipboardFallback(r)}catch(i){a&&a.close(),console.error("Batch copy failed:",i),this.$message.error(this.$t("dashboard.batchCopyFailed"))}},copyToClipboardFallback(e){const t=document.createElement("textarea");document.body.appendChild(t),t.style.position="fixed",t.style.clip="rect(0 0 0 0)",t.style.top="10px",t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t),this.$message.success(this.$t("dashboard.batchCopyLinksSuccess"))},handleCopy(e,t){let a="";if("External"===this.paginatedTableData[e].metadata?.Channel)switch(this.defaultUrlFormat){case"originUrl":a=this.paginatedTableData[e].metadata?.ExternalLink;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.paginatedTableData[e].metadata?.ExternalLink})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.paginatedTableData[e].metadata?.ExternalLink}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}else switch(this.defaultUrlFormat){case"originUrl":a=`${this.rootUrl}${t}`;break;case"mdUrl":a=`![${this.paginatedTableData[e].metadata?.FileName||t}](${this.rootUrl}${t})`;break;case"htmlUrl":a=`${this.paginatedTableData[e].metadata?.FileName||t}`;break;case"bbUrl":a=`[img]${this.rootUrl}${t}[/img]`;break;case"tgId":a=this.paginatedTableData[e].metadata?.TgFileId||"none";break;case"s3Location":a=this.paginatedTableData[e].metadata?.S3Location||"none";break}navigator.clipboard?navigator.clipboard.writeText(a).then(()=>this.$message.success(this.$t("dashboard.copyFileLinkSuccess"))):this.copyToClipboardFallback(a)},async loadMoreData(){this.loading=!0;try{await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,60,this.filters),await this.fetchFileList()}catch(e){this.$message.error(this.$t("dashboard.loadMoreFailed"))}finally{this.loading=!1}},updateStats(e,t=!1){t?this.Number=e:this.Number+=e},sort(e){this.sortOption=e},sortData(e){const t=e.filter(e=>e.isFolder),a=e.filter(e=>!e.isFolder);return"dateDesc"===this.sortOption?(t.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp)),a.sort((e,t)=>new Date(t.metadata?.TimeStamp)-new Date(e.metadata?.TimeStamp))):(t.sort((e,t)=>e.name.localeCompare(t.name)),a.sort((e,t)=>e.name.localeCompare(t.name))),t.concat(a)},handleVideoClick(e){const t=e.target;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},handleLogout(){const e="/api/auth/logout";fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({authType:"admin"})}).finally(()=>{this.$store.commit("setAdminLoggedIn",!1),this.$router.push("/adminLogin")})},handleSelectPage(){this.selectPage?this.paginatedTableData.forEach(e=>e.selected=!1):this.paginatedTableData.forEach(e=>e.selected=!0)},clearSelection(){this.tableData.forEach(e=>e.selected=!1),this.selectedFiles=[]},handleBatchAction(e){"copy"===e?this.handleBatchCopy():"delete"===e?this.handleBatchDelete():"download"===e?this.handleBatchDownload():"move"===e?this.handleBatchMove():"tagManagement"===e?this.handleBatchTagManagement():"ban"===e?this.handleBatchBlock():"white"===e&&this.handleBatchWhite()},handleMove(e,t){this.moveFileKey=t,this.moveFileIndex=e,this.isBatchMove=!1,this.moveTargetPath="/",this.showMoveDialog=!0},handleBatchMove(){this.isBatchMove=!0,this.moveTargetPath="/",this.showMoveDialog=!0},confirmMove(e){const t=e,a=(0,hn.G)(t);if(!a.valid)return void this.$message.error(a.error);const i=t.replace(/^\/+/,"")+(t.endsWith("/")||""===t?"":"/");i!==this.currentPath?(this.showMoveDialog=!1,this.isBatchMove?this.executeBatchMove(i):this.executeSingleMove(i)):this.$message.warning(this.$t("dashboard.moveTargetSameAsCurrent"))},executeSingleMove(e){const t=this.moveFileKey,a=this.tableData.find(e=>e.name===t)?.isFolder;(0,E.A)(`/api/manage/move/${t}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"}).then(i=>{if(!i.ok)return Promise.reject("Request failed");{const i=this.tableData.findIndex(e=>e.name===t);if(-1!==i){const n=e+t.split("/").pop();cn.moveFile(t,n,a,this.currentPath),this.tableData.splice(i,1),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})})}this.updateStats(-1,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},executeBatchMove(e){const t=this.selectedFiles.map(t=>{const a=t.isFolder;return(0,E.A)(`/api/manage/move/${t.name}?folder=${a}&dist=${encodeURIComponent(e)}`,{method:"GET"})});Promise.all(t).then(t=>{let a=0;t.forEach((t,i)=>{if(t.ok){a++;const t=this.selectedFiles[i];t.selected=!1;const n=this.tableData.findIndex(e=>e.name===t.name);if(-1!==n){const a=e+t.name.split("/").pop();cn.moveFile(t.name,a,t.isFolder,this.currentPath),this.tableData.splice(n,1)}}}),this.$nextTick(()=>{const e=[...this.tableData];this.tableData=[],this.$nextTick(()=>{this.tableData=e})}),this.updateStats(-a,!1),this.$message.success(this.$t("dashboard.moveSuccess"))}).then(()=>{this.refreshLocalFileList()}).catch(()=>this.$message.error(this.$t("dashboard.moveFailed")))},handleBatchBlock(){this.$confirm(this.$t("dashboard.batchBlockConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/block/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="Block")}}),this.$message.success(this.$t("dashboard.batchBlockSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchBlockFailed")))}).catch(()=>console.log("Batch block cancelled"))},handleBatchWhite(){this.$confirm(this.$t("dashboard.batchWhiteConfirm"),this.$t("dashboard.deleteConfirmTitle"),{confirmButtonText:this.$t("dashboard.deleteConfirmOk"),cancelButtonText:this.$t("dashboard.deleteConfirmCancel"),type:"warning"}).then(()=>{const e=this.selectedFiles.map(e=>e.isFolder?Promise.resolve({ok:!1}):(0,E.A)(`/api/manage/white/${e.name}`,{method:"GET"}));Promise.all(e).then(e=>{e.forEach((e,t)=>{if(e.ok){const e=this.tableData.findIndex(e=>e.name===this.selectedFiles[t].name);-1!==e&&(this.tableData[e].metadata.ListType="White")}}),this.$message.success(this.$t("dashboard.batchWhiteSuccess"))}).catch(()=>this.$message.error(this.$t("dashboard.batchWhiteFailed")))}).catch(()=>console.log("Batch white cancelled"))},handleBatchDownload(){const e=new(rn()),t=e.folder("files"),a={},i=this.selectedFiles.map(async e=>{if(e.isFolder)return;const i=await fetch(this.getFileLink(e.name)),n=await i.blob();let s=e.metadata?.FileName||e.name;if(a[s]){const t=s.substring(s.lastIndexOf(".")),i=s.substring(0,s.lastIndexOf("."));s=`${i}(${a[s]})${t}`,a[e.name]++}else a[s]=1;t.file(s,n)});Promise.all(i).then(()=>e.generateAsync({type:"blob"})).then(e=>{const t=document.createElement("a");t.href=URL.createObjectURL(e),t.download="files.zip",t.click()})},isVideo(e){if(this.isAudio(e))return!1;let t=e.metadata?.FileType?.includes("video");if(!t){const a=["mp4","webm","ogg","avi","mov","flv","wmv","mkv","rmvb","3gp","mpg","mpeg","m4v","f4v","rm","asf","dat","ts","vob","swf","divx","xvid","m2ts","mts","m2v","3g2","3gp2","3gpp","3gpp2","mpe","m1v","mpv","mpv2","mp2v","m2t","m2ts","m2v","m4v"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isAudio(e){let t=e.metadata?.FileType?.includes("audio");if(!t){const a=["mp3","wav","flac","aac","ogg","wma","m4a","ape","aiff","alac","opus","mid","midi","m4b","m4p","m4r","amr","au","ra","ram"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},isImage(e){let t=e.metadata?.FileType?.includes("image");if(!t){const a=["jpg","jpeg","png","gif","bmp","webp","svg","ico","tiff","tif","psd","ai","eps","raw","cr2","nef","orf","sr2","dng","arw","rw2","raf","pef","x3f","srf","erf","mrw","nrw","kdc","dcr","mef","mos","crw","raf","rwl","srw","3fr","fff","iiq","qtk","bay","k25","kdc","dcs","drf","dng","erf","kdc","mdc","mef","mos","mrw","nef","nrw","orf","pef","ptx","pxn","r3d","raf","raw","rwl","rw2","rwz","sr2","srf","x3f"],i=e.name.substring(e.name.lastIndexOf(".")+1).toLowerCase();t=a.includes(i)}return t},getFileLink(e){const t=`/file/${e}?from=admin`;return t},handlePageChange(e){this.currentPage=e,this.currentPage===Math.ceil(this.tableData.length/this.pageSize)&&this.loadMoreData()},isMobileViewport(){return window.innerWidth<768},updateResponsivePageSize(){const e=this.isMobileViewport()?16:15;if(this.pageSize===e)return;const t=(this.currentPage-1)*this.pageSize;this.pageSize=e,this.currentPage=Math.min(Math.floor(t/e)+1,this.realTotalPages)},isSwipeIgnoredTarget(e){return Boolean(e?.closest?.("button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn"))},handlePageSwipeStart(e){if(!this.isMobileViewport()||this.isDragging||this.loading||this.showMobileActionModal||this.showMobileDirectoryDrawer||this.isSwipeIgnoredTarget(e.target))return void this.resetPageSwipe();const t=e.touches?.[0];t&&(this.pageSwipeStartX=t.clientX,this.pageSwipeStartY=t.clientY,this.pageSwipeStartTime=Date.now())},async handlePageSwipeEnd(e){if(null===this.pageSwipeStartX||null===this.pageSwipeStartY)return;const t=e.changedTouches?.[0];if(!t)return void this.resetPageSwipe();const a=t.clientX-this.pageSwipeStartX,i=t.clientY-this.pageSwipeStartY,n=Date.now()-this.pageSwipeStartTime;if(this.resetPageSwipe(),n>700||Math.abs(a)<64||Math.abs(a)<1.35*Math.abs(i))return;const s=a<0?this.currentPage+1:this.currentPage-1;await this.goToSwipePage(s)},resetPageSwipe(){this.pageSwipeStartX=null,this.pageSwipeStartY=null,this.pageSwipeStartTime=0},async goToSwipePage(e){e<1||e>this.realTotalPages||e===this.currentPage||(e>this.totalPages?await this.loadMoreDataUntilPage(e):this.handlePageChange(e))},handleJumpPage(){const e=parseInt(this.jumpPage);isNaN(e)||e<1?this.$message.warning(this.$t("dashboard.invalidPageNumber")):e>this.realTotalPages?this.$message.warning(this.$t("dashboard.pageExceedsMax",{max:this.realTotalPages})):(e>this.totalPages?(this.$message.info(this.$t("dashboard.loadingData")),this.loadMoreDataUntilPage(e)):this.currentPage=e,this.jumpPage="")},async loadMoreDataUntilPage(e){this.loading=!0;try{const t=e*this.pageSize,a=this.filteredTableData.filter(e=>e.isFolder).length,i=this.filteredTableData.filter(e=>!e.isFolder).length,n=Math.max(0,t-a-i);n>0&&(await cn.loadMoreFiles(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,n,this.filters),await this.fetchFileList()),this.currentPage=Math.min(e,this.totalPages)}catch(t){this.$message.error(this.$t("dashboard.loadDataFailed"))}finally{this.loading=!1}},isFolder(e){if(e.isFolder)return!0;let t=e.name;if(t.startsWith("http")&&(t=t.split("/file/")[1]),t&&t.includes("/")){const e=this.currentPath?t.substring(this.currentPath.length):t;return""===this.currentPath?!t.split("/")[0].includes("."):e.includes("/")}return!1},getFolderName(e){let t="";if(e&&e.includes("/")){const a=e.split("/");if(""===this.currentPath)t=a[0];else{const a=e.substring(this.currentPath.length);t=a.split("/")[0]}}else t=e;const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileName(e){let t=e.split("/").pop();const a=20;if(t.length>a){const e=Math.floor((a-3)/2),i=Math.ceil((a-3)/2);return`${t.substring(0,e)}...${t.substring(t.length-i)}`}return t},getFileNameStart(e){if(!e)return"";if(e.length<=30)return e;const t=e.lastIndexOf(".");if(t>0){const a=e.substring(0,t),i=Math.min(a.length,Math.floor(.6*e.length));return a.substring(0,i)}return e.substring(0,Math.floor(.6*e.length))},getFileNameEnd(e){if(!e)return"";if(e.length<=30)return"";const t=e.lastIndexOf(".");if(t>0){const a=e.substring(t),i=e.substring(0,t),n=Math.min(8,Math.floor(.2*i.length));return"…"+i.substring(i.length-n)+a}const a=Math.min(10,Math.floor(.3*e.length));return"…"+e.substring(e.length-a)},enterFolder(e){this.currentPath=e+(e.endsWith("/")?"":"/"),this.refreshFileList()},navigateToFolder(e){this.currentPath=e?e+(e.endsWith("/")?"":"/"):"",this.refreshFileList()},async fetchFileList(){this.loading=!0;try{const e=cn.getLocalFileList(),t=new Set(e.directories||[]),a=e.files||[],i=Array.from(t).map(e=>({name:e,isFolder:!0,selected:!1,metadata:{FileName:e.split("/").pop()}})),n=a.map(e=>({name:e.name,isFolder:!1,selected:!1,metadata:e.metadata}));this.tableData=[...i,...n],this.updateStats(e.totalCount,!0),this.directFileCount=e.directFileCount||0,this.directFolderCount=e.directFolderCount||0}catch(e){console.error("Error fetching file list:",e),this.$message.error(this.$t("dashboard.fetchFileListFailed"))}finally{this.loading=!1}},async refreshFileList(){this.refreshLoading=!0,this.loading=!0;try{const e=await cn.refreshFileList(this.currentPath,this.searchKeywords,this.searchIncludeTags,this.searchExcludeTags,this.filters);if(!e)throw new Error("Refresh failed");await this.fetchFileList()}catch(e){!e.message?.includes("Unauthorized")&&this.$store.state.adminLoggedIn&&(console.error("Error refreshing file list:",e),this.$message.error(this.$t("dashboard.refreshFailed")))}finally{this.refreshLoading=!1,this.loading=!1}},async refreshLocalFileList(){this.refreshLoading=!0,this.loading=!0;try{await this.fetchFileList()}catch(e){console.error("Error refreshing local file list:",e),this.$message.error(this.$t("dashboard.refreshFailed"))}finally{this.refreshLoading=!1,this.loading=!1}},handleTagManagement(e){this.currentTagFile=e,this.showTagDialog=!0},handleBatchTagManagement(){0!==this.selectedFiles.length?this.showBatchTagDialog=!0:this.$message.warning(this.$t("dashboard.selectFilesFirst"))},async handleTagsUpdated(e){const t=this.tableData.findIndex(e=>e.name===this.currentTagFile);-1!==t&&(this.tableData[t].metadata||(this.tableData[t].metadata={}),this.tableData[t].metadata.Tags=e,this.showdetailDialog&&this.detailFile?.name===this.currentTagFile&&(this.detailFile.metadata||(this.detailFile.metadata={}),this.detailFile.metadata.Tags=e))},async handleBatchTagsUpdated(){await this.refreshLocalFileList()},handleMetadataUpdated(e,t){const a=this.tableData.findIndex(t=>t.name===e);-1!==a&&(this.tableData[a].metadata={...this.tableData[a].metadata,...t}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.metadata={...this.detailFile.metadata,...t})},handleFileRenamed(e,t,a){const i=this.tableData.findIndex(t=>t.name===e);-1!==i&&(this.tableData[i].name=t,this.tableData[i].metadata={...this.tableData[i].metadata,...a}),this.detailFile&&this.detailFile.name===e&&(this.detailFile.name=t,this.detailFile.metadata={...this.detailFile.metadata,...a},this.showdetailDialog=!1,this.$nextTick(()=>{this.showdetailDialog=!0}))},generateFileLink(e,t){const a="External"===t?.Channel,i=a?t?.ExternalLink:`${this.rootUrl}${e}`,n=t?.FileName||e;switch(this.defaultUrlFormat){case"originUrl":return i;case"mdUrl":return`![${n}](${i})`;case"htmlUrl":return`${n}`;case"bbUrl":return`[img]${i}[/img]`;case"tgId":return t?.TgFileId||"";case"s3Location":return t?.S3Location||"";default:return i}},async handleFolderCopy(e){const t=this.$loading({lock:!0,text:this.$t("dashboard.fetchingFileList")});try{const a=await(0,E.A)(`/api/manage/list?dir=${encodeURIComponent(e)}&recursive=true&count=-1`,{method:"GET"}),i=await a.json();if(t.close(),!i.files||0===i.files.length)return void this.$message.warning(this.$t("dashboard.folderEmptyNoLinks"));const n=i.files.map(e=>this.generateFileLink(e.name,e.metadata)).filter(e=>e);if(0===n.length)return void this.$message.warning(this.$t("dashboard.noLinksAvailable"));const s=n.join("\n");navigator.clipboard?(await navigator.clipboard.writeText(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length}))):(this.copyToClipboardFallback(s),this.$message.success(this.$t("dashboard.copiedFileLinks",{count:n.length})))}catch(a){t.close(),console.error("Copy folder links failed:",a),this.$message.error(this.$t("dashboard.copyFolderLinksFailed"))}}},mounted(){this.initializeBackground("adminBkImg",".container",!1,!0),this.updateResponsivePageSize(),window.addEventListener("resize",this.updateResponsivePageSize),this.loading=!0,this.showLogoutButton=this.$store.state.adminLoggedIn,this.refreshFileList().then(()=>this.extractChannelNames()).catch(e=>{"Unauthorized"!==e.message&&this.$message.error(this.$t("dashboard.syncDataError"))}).finally(()=>{this.loading=!1}),this.customUrlPrefix=this.adminUrlSettings.customUrlPrefix,this.useCustomUrl=this.adminUrlSettings.useCustomUrl;const e=localStorage.getItem("viewMode");"card"!==e&&"list"!==e||(this.viewMode=e)},beforeUnmount(){window.removeEventListener("resize",this.updateResponsivePageSize)}};const vn=(0,I.A)(bn,[["render",an],["__scopeId","data-v-57eabdee"]]);var kn=vn},37952:function(e,t,a){"use strict";a(85331),a(97197)},40670:function(e,t,a){"use strict";a(85331),a(99648),a(19104),a(85970)},44813:function(e,t,a){a(44114),a(18111),a(22489),a(7588),a(79577),a(41549),a(49797),a(49631),a(35623),a(59848),function(t){e.exports=t()}(function(){return function e(t,a,i){function n(r,o){if(!a[r]){if(!t[r]){var l=void 0;if(!o&&l)return require(r,!0);if(s)return s(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var c=a[r]={exports:{}};t[r][0].call(c.exports,function(e){var a=t[r][1][e];return n(a||e)},c,c.exports,e,t,a,i)}return a[r].exports}for(var s=void 0,r=0;r>2,o=(3&t)<<4|a>>4,l=1>6:64,d=2>4,a=(15&r)<<4|(o=s.indexOf(e.charAt(d++)))>>2,i=(3&o)<<6|(l=s.indexOf(e.charAt(d++))),u[c++]=t,64!==o&&(u[c++]=a),64!==l&&(u[c++]=i);return u}},{"./support":30,"./utils":32}],2:[function(e,t,a){"use strict";var i=e("./external"),n=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),r=e("./stream/DataLengthProbe");function o(e,t,a,i,n){this.compressedSize=e,this.uncompressedSize=t,this.crc32=a,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var e=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new r("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,a){return e.pipe(new s).pipe(new r("uncompressedSize")).pipe(t.compressWorker(a)).pipe(new r("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,a){"use strict";var i=e("./stream/GenericWorker");a.STORE={magic:"\0\0",compressWorker:function(){return new i("STORE compression")},uncompressWorker:function(){return new i("STORE decompression")}},a.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,a){"use strict";var i=e("./utils"),n=function(){for(var e,t=[],a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==i.getTypeOf(e)?function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t[o])];return-1^e}(0|t,e,e.length,0):function(e,t,a,i){var s=n,r=i+a;e^=-1;for(var o=i;o>>8^s[255&(e^t.charCodeAt(o))];return-1^e}(0|t,e,e.length,0):0}},{"./utils":32}],5:[function(e,t,a){"use strict";a.base64=!1,a.binary=!1,a.dir=!1,a.createFolders=!0,a.date=null,a.compression=null,a.compressionOptions=null,a.comment=null,a.unixPermissions=null,a.dosPermissions=null},{}],6:[function(e,t,a){"use strict";var i=null;i="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:i}},{lie:37}],7:[function(e,t,a){"use strict";var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,n=e("pako"),s=e("./utils"),r=e("./stream/GenericWorker"),o=i?"uint8array":"array";function l(e,t){r.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}a.magic="\b\0",s.inherits(l,r),l.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},l.prototype.flush=function(){r.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},l.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this._pako=null},l.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},a.compressWorker=function(e){return new l("Deflate",e)},a.uncompressWorker=function(){return new l("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,a){"use strict";function i(e,t){var a,i="";for(a=0;a>>=8;return i}function n(e,t,a,n,r,c){var h,u,f=e.file,m=e.compression,p=c!==o.utf8encode,g=s.transformTo("string",c(f.name)),b=s.transformTo("string",o.utf8encode(f.name)),v=f.comment,k=s.transformTo("string",c(v)),y=s.transformTo("string",o.utf8encode(v)),w=b.length!==f.name.length,_=y.length!==v.length,F="",C="",T="",S=f.dir,$=f.date,L={crc32:0,compressedSize:0,uncompressedSize:0};t&&!a||(L.crc32=e.crc32,L.compressedSize=e.compressedSize,L.uncompressedSize=e.uncompressedSize);var x=0;t&&(x|=8),p||!w&&!_||(x|=2048);var D=0,E=0;S&&(D|=16),"UNIX"===r?(E=798,D|=function(e,t){var a=e;return e||(a=t?16893:33204),(65535&a)<<16}(f.unixPermissions,S)):(E=20,D|=function(e){return 63&(e||0)}(f.dosPermissions)),h=$.getUTCHours(),h<<=6,h|=$.getUTCMinutes(),h<<=5,h|=$.getUTCSeconds()/2,u=$.getUTCFullYear()-1980,u<<=4,u|=$.getUTCMonth()+1,u<<=5,u|=$.getUTCDate(),w&&(C=i(1,1)+i(l(g),4)+b,F+="up"+i(C.length,2)+C),_&&(T=i(1,1)+i(l(k),4)+y,F+="uc"+i(T.length,2)+T);var A="";return A+="\n\0",A+=i(x,2),A+=m.magic,A+=i(h,2),A+=i(u,2),A+=i(L.crc32,4),A+=i(L.compressedSize,4),A+=i(L.uncompressedSize,4),A+=i(g.length,2),A+=i(F.length,2),{fileRecord:d.LOCAL_FILE_HEADER+A+g+F,dirRecord:d.CENTRAL_FILE_HEADER+i(E,2)+A+i(k.length,2)+"\0\0\0\0"+i(D,4)+i(n,4)+g+F+k}}var s=e("../utils"),r=e("../stream/GenericWorker"),o=e("../utf8"),l=e("../crc32"),d=e("../signature");function c(e,t,a,i){r.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=a,this.encodeFileName=i,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(c,r),c.prototype.push=function(e){var t=e.meta.percent||0,a=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,r.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:a?(t+100*(a-i-1))/a:100}}))},c.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var a=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:a.fileRecord,meta:{percent:0}})}else this.accumulate=!0},c.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,a=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(a.dirRecord),t)this.push({data:function(e){return d.DATA_DESCRIPTOR+i(e.crc32,4)+i(e.compressedSize,4)+i(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:a.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},c.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)a=(a<<8)+this.byteAt(t);return this.index+=e,a},readString:function(e){return i.transformTo("string",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=n},{"../utils":32}],19:[function(e,t,a){"use strict";var i=e("./Uint8ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,a){"use strict";var i=e("./DataReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},n.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},n.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},n.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./DataReader":18}],21:[function(e,t,a){"use strict";var i=e("./ArrayReader");function n(e){i.call(this,e)}e("../utils").inherits(n,i),n.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=n},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,a){"use strict";var i=e("../utils"),n=e("../support"),s=e("./ArrayReader"),r=e("./StringReader"),o=e("./NodeBufferReader"),l=e("./Uint8ArrayReader");t.exports=function(e){var t=i.getTypeOf(e);return i.checkSupport(t),"string"!==t||n.uint8array?"nodebuffer"===t?new o(e):n.uint8array?new l(i.transformTo("uint8array",e)):new s(i.transformTo("array",e)):new r(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,a){"use strict";a.LOCAL_FILE_HEADER="PK",a.CENTRAL_FILE_HEADER="PK",a.CENTRAL_DIRECTORY_END="PK",a.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",a.ZIP64_CENTRAL_DIRECTORY_END="PK",a.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../utils");function s(e){i.call(this,"ConvertWorker to "+e),this.destType=e}n.inherits(s,i),s.prototype.processChunk=function(e){this.push({data:n.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,a){"use strict";var i=e("./GenericWorker"),n=e("../crc32");function s(){i.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,i),s.prototype.processChunk=function(e){this.streamInfo.crc32=n(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}i.inherits(s,n),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}n.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./GenericWorker");function s(e){n.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=i.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,a){"use strict";function i(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var a=0;a "+e:e}},t.exports=i},{}],29:[function(e,t,a){"use strict";var i=e("../utils"),n=e("./ConvertWorker"),s=e("./GenericWorker"),r=e("../base64"),o=e("../support"),l=e("../external"),d=null;if(o.nodestream)try{d=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function c(e,t){return new l.Promise(function(a,n){var s=[],o=e._internalType,l=e._outputType,d=e._mimeType;e.on("data",function(e,a){s.push(e),t&&t(a)}).on("error",function(e){s=[],n(e)}).on("end",function(){try{var e=function(e,t,a){switch(e){case"blob":return i.newBlob(i.transformTo("arraybuffer",t),a);case"base64":return r.encode(t);default:return i.transformTo(e,t)}}(l,function(e,t){var a,i=0,n=null,s=0;for(a=0;a>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t}(e)},a.utf8decode=function(e){return n.nodebuffer?i.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,a,n,s,r=e.length,l=new Array(2*r);for(t=a=0;t>10&1023,l[a++]=56320|1023&n)}return l.length!==a&&(l.subarray?l=l.subarray(0,a):l.length=a),i.applyFromCharCode(l)}(e=i.transformTo(n.uint8array?"uint8array":"array",e))},i.inherits(d,r),d.prototype.processChunk=function(e){var t=i.transformTo(n.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(n.uint8array){var s=t;(t=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),t.set(s,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var r=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+o[e[a]]>t?a:t}(t),l=t;r!==t.length&&(n.uint8array?(l=t.subarray(0,r),this.leftOver=t.subarray(r,t.length)):(l=t.slice(0,r),this.leftOver=t.slice(r,t.length))),this.push({data:a.utf8decode(l),meta:e.meta})},d.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:a.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},a.Utf8DecodeWorker=d,i.inherits(c,r),c.prototype.processChunk=function(e){this.push({data:a.utf8encode(e.data),meta:e.meta})},a.Utf8EncodeWorker=c},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,a){"use strict";var i=e("./support"),n=e("./base64"),s=e("./nodejsUtils"),r=e("./external");function o(e){return e}function l(e,t){for(var a=0;a>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===n.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===n.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===n.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===n.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,a,i,n=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(a<65536?t[r++]=224|a>>>12:(t[r++]=240|a>>>18,t[r++]=128|a>>>12&63),t[r++]=128|a>>>6&63),t[r++]=128|63&a);return t},a.buf2binstring=function(e){return l(e,e.length)},a.binstring2buf=function(e){for(var t=new i.Buf8(e.length),a=0,n=t.length;a>10&1023,d[i++]=56320|1023&n)}return l(d,i)},a.utf8border=function(e,t){var a;for((t=t||e.length)>e.length&&(t=e.length),a=t-1;0<=a&&128==(192&e[a]);)a--;return a<0||0===a?t:a+r[e[a]]>t?a:t}},{"./common":41}],43:[function(e,t,a){"use strict";t.exports=function(e,t,a,i){for(var n=65535&e,s=e>>>16&65535,r=0;0!==a;){for(a-=r=2e3>>1:e>>>1;t[a]=e}return t}();t.exports=function(e,t,a,n){var s=i,r=n+a;e^=-1;for(var o=n;o>>8^s[255&(e^t[o])];return-1^e}},{}],46:[function(e,t,a){"use strict";var i,n=e("../utils/common"),s=e("./trees"),r=e("./adler32"),o=e("./crc32"),l=e("./messages"),d=0,c=4,h=0,u=-2,f=-1,m=4,p=2,g=8,b=9,v=286,k=30,y=19,w=2*v+1,_=15,F=3,C=258,T=C+F+1,S=42,$=113,L=1,x=2,D=3,E=4;function A(e,t){return e.msg=l[t],t}function I(e){return(e<<1)-(4e.avail_out&&(a=e.avail_out),0!==a&&(n.arraySet(e.output,t.pending_buf,t.pending_out,a,e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))}function 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,U(e.strm)}function B(e,t){e.pending_buf[e.pending++]=t}function W(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function R(e,t){var a,i,n=e.max_chain_length,s=e.strstart,r=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-T?e.strstart-(e.w_size-T):0,d=e.window,c=e.w_mask,h=e.prev,u=e.strstart+C,f=d[s+r-1],m=d[s+r];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(d[(a=t)+r]===m&&d[a+r-1]===f&&d[a]===d[s]&&d[++a]===d[s+1]){s+=2,a++;do{}while(d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&d[++s]===d[++a]&&sl&&0!=--n);return r<=e.lookahead?r:e.lookahead}function O(e){var t,a,i,s,l,d,c,h,u,f,m=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=m+(m-T)){for(n.arraySet(e.window,e.window,m,m,0),e.match_start-=m,e.strstart-=m,e.block_start-=m,t=a=e.hash_size;i=e.head[--t],e.head[t]=m<=i?i-m:0,--a;);for(t=a=m;i=e.prev[--t],e.prev[t]=m<=i?i-m:0,--a;);s+=m}if(0===e.strm.avail_in)break;if(d=e.strm,c=e.window,h=e.strstart+e.lookahead,u=s,f=void 0,f=d.avail_in,u=F)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F)if(i=s._tr_tally(e,e.strstart-e.match_start,e.match_length-F),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=F){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=F&&(e.ins_h=(e.ins_h<=F&&e.match_length<=e.prev_length){for(n=e.strstart+e.lookahead-F,i=s._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-F),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=n&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(O(e),0===e.lookahead&&t===d)return L;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,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===c?(P(e,!0),0===e.strm.avail_out?D:E):(e.strstart>e.block_start&&(P(e,!1),e.strm.avail_out),L)}),new V(4,4,8,4,M),new V(4,5,16,8,M),new V(4,6,32,32,M),new V(4,4,16,16,N),new V(8,16,32,32,N),new V(8,16,128,128,N),new V(8,32,128,256,N),new V(32,128,258,1024,N),new V(32,258,258,4096,N)],a.deflateInit=function(e,t){return Z(e,t,g,15,8,0)},a.deflateInit2=Z,a.deflateReset=K,a.deflateResetKeep=j,a.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?u:(e.state.gzhead=t,h):u},a.deflate=function(e,t){var a,n,r,l;if(!e||!e.state||5>8&255),B(n,n.gzhead.time>>16&255),B(n,n.gzhead.time>>24&255),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(B(n,255&n.gzhead.extra.length),B(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):(B(n,0),B(n,0),B(n,0),B(n,0),B(n,0),B(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),B(n,3),n.status=$);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=$,W(n,f),0!==n.strstart&&(W(n,e.adler>>>16),W(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)),U(e),r=n.pending,n.pending!==n.pending_buf_size));)B(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)),U(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)),U(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&&U(e),n.pending+2<=n.pending_buf_size&&(B(n,255&e.adler),B(n,e.adler>>8&255),e.adler=0,n.status=$)):n.status=$),0!==n.pending){if(U(e),0===e.avail_out)return n.last_flush=-1,h}else if(0===e.avail_in&&I(t)<=I(a)&&t!==c)return A(e,-5);if(666===n.status&&0!==e.avail_in)return A(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==d&&666!==n.status){var m=2===n.strategy?function(e,t){for(var a;;){if(0===e.lookahead&&(O(e),0===e.lookahead)){if(t===d)return L;break}if(e.match_length=0,a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):3===n.strategy?function(e,t){for(var a,i,n,r,o=e.window;;){if(e.lookahead<=C){if(O(e),e.lookahead<=C&&t===d)return L;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=F&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=F?(a=s._tr_tally(e,1,e.match_length-F),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(P(e,!1),0===e.strm.avail_out))return L}return e.insert=0,t===c?(P(e,!0),0===e.strm.avail_out?D:E):e.last_lit&&(P(e,!1),0===e.strm.avail_out)?L:x}(n,t):i[n.level].func(n,t);if(m!==D&&m!==E||(n.status=666),m===L||m===D)return 0===e.avail_out&&(n.last_flush=-1),h;if(m===x&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(z(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),U(e),0===e.avail_out))return n.last_flush=-1,h}return t!==c?h:n.wrap<=0?1:(2===n.wrap?(B(n,255&e.adler),B(n,e.adler>>8&255),B(n,e.adler>>16&255),B(n,e.adler>>24&255),B(n,255&e.total_in),B(n,e.total_in>>8&255),B(n,e.total_in>>16&255),B(n,e.total_in>>24&255)):(W(n,e.adler>>>16),W(n,65535&e.adler)),U(e),0=a.w_size&&(0===o&&(z(a.head),a.strstart=0,a.block_start=0,a.insert=0),f=new n.Buf8(a.w_size),n.arraySet(f,t,m-a.w_size,a.w_size,0),t=f,m=a.w_size),l=e.avail_in,d=e.next_in,c=e.input,e.avail_in=m,e.next_in=0,e.input=t,O(a);a.lookahead>=F;){for(i=a.strstart,s=a.lookahead-(F-1);a.ins_h=(a.ins_h<>>=y=k>>>24,m-=y,0===(y=k>>>16&255))S[s++]=65535&k;else{if(!(16&y)){if(0==(64&y)){k=p[(65535&k)+(f&(1<>>=y,m-=y),m<15&&(f+=T[i++]<>>=y=k>>>24,m-=y,!(16&(y=k>>>16&255))){if(0==(64&y)){k=g[(65535&k)+(f&(1<>>=y,m-=y,(y=s-r)<_){if(c<(y=_-y)&&a.sane){e.msg="invalid distance too far back",a.mode=30;break e}if(C=u,(F=0)===h){if(F+=d-y,y>3,f&=(1<<(m-=w<<3))-1,e.next_in=i,e.next_out=s,e.avail_in=i>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function g(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function b(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=u,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new i.Buf32(f),t.distcode=t.distdyn=new i.Buf32(m),t.sane=1,t.back=-1,c):h}function v(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,b(e)):h}function k(e,t){var a,i;return e&&e.state?(i=e.state,t<0?(a=0,t=-t):(a=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=r.wsize?(i.arraySet(r.window,t,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n<(s=r.wsize-r.wnext)&&(s=n),i.arraySet(r.window,t,a-n,s,r.wnext),(n-=s)?(i.arraySet(r.window,t,a-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=s(a.check,O,2,0),w=y=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg="incorrect header check",a.mode=30;break}if(8!=(15&y)){e.msg="unknown compression method",a.mode=30;break}if(w-=4,U=8+(15&(y>>>=4)),0===a.wbits)a.wbits=U;else if(U>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<>8&1),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=3;case 3:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>8&255,O[2]=y>>>16&255,O[3]=y>>>24&255,a.check=s(a.check,O,4,0)),w=y=0,a.mode=4;case 4:for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>8),512&a.flags&&(O[0]=255&y,O[1]=y>>>8&255,a.check=s(a.check,O,2,0)),w=y=0,a.mode=5;case 5:if(1024&a.flags){for(;w<16;){if(0===v)break e;v--,y+=f[g++]<>>8&255,a.check=s(a.check,O,2,0)),w=y=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(v<(S=a.length)&&(S=v),S&&(a.head&&(U=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),i.arraySet(a.head.extra,f,g,S,U)),512&a.flags&&(a.check=s(a.check,f,S,g)),v-=S,g+=S,a.length-=S),a.length))break e;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===v)break e;for(S=0;U=f[g+S++],a.head&&U&&a.length<65536&&(a.head.name+=String.fromCharCode(U)),U&&S>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;w<32;){if(0===v)break e;v--,y+=f[g++]<>>=7&w,w-=7&w,a.mode=27;break}for(;w<3;){if(0===v)break e;v--,y+=f[g++]<>>=1)){case 0:a.mode=14;break;case 1:if(C(a),a.mode=20,6!==t)break;y>>>=2,w-=2;break e;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}y>>>=2,w-=2;break;case 14:for(y>>>=7&w,w-=7&w;w<32;){if(0===v)break e;v--,y+=f[g++]<>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&y,w=y=0,a.mode=15,6===t)break e;case 15:a.mode=16;case 16:if(S=a.length){if(v>>=5,w-=5,a.ndist=1+(31&y),y>>>=5,w-=5,a.ncode=4+(15&y),y>>>=4,w-=4,286>>=3,w-=3}for(;a.have<19;)a.lens[M[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,B={bits:a.lenbits},P=o(0,a.lens,0,19,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=x,w-=x,a.lens[a.have++]=E;else{if(16===E){for(W=x+2;w>>=x,w-=x,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}U=a.lens[a.have-1],S=3+(3&y),y>>>=2,w-=2}else if(17===E){for(W=x+3;w>>=x)),y>>>=3,w-=3}else{for(W=x+7;w>>=x)),y>>>=7,w-=7}if(a.have+S>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;S--;)a.lens[a.have++]=U}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,B={bits:a.lenbits},P=o(l,a.lens,0,a.nlen,a.lencode,0,a.work,B),a.lenbits=B.bits,P){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,B={bits:a.distbits},P=o(d,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,B),a.distbits=B.bits,P){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,6===t)break e;case 20:a.mode=21;case 21:if(6<=v&&258<=k){e.next_out=b,e.avail_out=k,e.next_in=g,e.avail_in=v,a.hold=y,a.bits=w,r(e,F),b=e.next_out,m=e.output,k=e.avail_out,g=e.next_in,f=e.input,v=e.avail_in,y=a.hold,w=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;D=(R=a.lencode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,a.length=E,0===D){a.mode=26;break}if(32&D){a.back=-1,a.mode=12;break}if(64&D){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&D,a.mode=22;case 22:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;D=(R=a.distcode[y&(1<>>16&255,E=65535&R,!((x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>A)])>>>16&255,E=65535&R,!(A+(x=R>>>24)<=w);){if(0===v)break e;v--,y+=f[g++]<>>=A,w-=A,a.back+=A}if(y>>>=x,w-=x,a.back+=x,64&D){e.msg="invalid distance code",a.mode=30;break}a.offset=E,a.extra=15&D,a.mode=24;case 24:if(a.extra){for(W=a.extra;w>>=a.extra,w-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===k)break e;if(S=F-k,a.offset>S){if((S=a.offset-S)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}$=S>a.wnext?(S-=a.wnext,a.wsize-S):a.wnext-S,S>a.length&&(S=a.length),L=a.window}else L=m,$=b-a.offset,S=a.length;for(kv?(y=B[W+h[C]],I[z+h[C]]):(y=96,0),f=1<>x)+(m-=f)]=k<<24|y<<16|w,0!==m;);for(f=1<>=1;if(0!==f?(A&=f-1,A+=f):A=0,C++,0==--U[F]){if(F===S)break;F=t[a+h[C]]}if($>>7)]}function B(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function W(e,t,a){e.bi_valid>p-a?(e.bi_buf|=t<>p-e.bi_valid,e.bi_valid+=a-p):(e.bi_buf|=t<>>=1,a<<=1,0<--t;);return a>>>1}function M(e,t,a){var i,n,s=new Array(m+1),r=0;for(i=1;i<=m;i++)s[i]=r=r+a[i-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=O(s[o]++,o))}}function N(e){var t;for(t=0;t>1;1<=a;a--)j(e,s,a);for(n=l;a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j(e,s,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,s[2*n]=s[2*a]+s[2*i],e.depth[n]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,s[2*a+1]=s[2*i+1]=n,e.heap[1]=n++,j(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var a,i,n,s,r,o,l=t.dyn_tree,d=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,u=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,g=t.stat_desc.max_length,b=0;for(s=0;s<=m;s++)e.bl_count[s]=0;for(l[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a>=7;i>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t>>3,(o=e.static_len+3+7>>>3)<=r&&(r=o)):r=o=a+5,a+4<=r&&-1!==t?Q(e,t,a,i):4===e.strategy||o===r?(W(e,2+(i?1:0),3),K(e,T,S)):(W(e,4+(i?1:0),3),function(e,t,a,i){var n;for(W(e,t-257,5),W(e,a-1,5),W(e,i-4,4),n=0;n>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[2*(L[a]+d+1)]++,e.dyn_dtree[2*P(t)]++),e.last_lit===e.lit_bufsize-1},a._tr_align=function(e){W(e,2,3),R(e,b,T),function(e){16===e.bi_valid?(B(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{"../utils/common":41}],53:[function(e,t,a){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,i){(function(e){!function(e,t){"use strict";if(!e.setImmediate){var a,i,n,s,r=1,o={},l=!1,d=e.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(e);c=c&&c.setTimeout?c:e,a="[object process]"==={}.toString.call(e.process)?function(e){process.nextTick(function(){u(e)})}:function(){if(e.postMessage&&!e.importScripts){var t=!0,a=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=a,t}}()?(s="setImmediate$"+Math.random()+"$",e.addEventListener?e.addEventListener("message",f,!1):e.attachEvent("onmessage",f),function(t){e.postMessage(s+t,"*")}):e.MessageChannel?((n=new MessageChannel).port1.onmessage=function(e){u(e.data)},function(e){n.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,function(e){var t=d.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):function(e){setTimeout(u,0,e)},c.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),i=0;i\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return n.test(e)?{valid:!1,error:i.Ay.global.t("validation.invalidCharacters")}:{valid:!0}}},63003:function(e,t,a){"use strict";a(85331)},70415:function(e,t,a){"use strict";a(85331),a(73565)},72907:function(e,t,a){"use strict";a(85331),a(96808),a(29092)},73565:function(e,t,a){"use strict";a(85331)},79899:function(e,t,a){"use strict";a(85331)},88830:function(e,t,a){"use strict";a(85331)},95385:function(e,t,a){"use strict";a(85331)},98642:function(e,t,a){"use strict";a(85331)}}]); -//# sourceMappingURL=957.e8a16dfc.js.map \ No newline at end of file diff --git a/frontend-dist/js/957.e8a16dfc.js.gz b/frontend-dist/js/957.e8a16dfc.js.gz deleted file mode 100644 index e9c47c8d..00000000 Binary files a/frontend-dist/js/957.e8a16dfc.js.gz and /dev/null differ diff --git a/frontend-dist/js/957.e8a16dfc.js.map b/frontend-dist/js/957.e8a16dfc.js.map deleted file mode 100644 index d6fa263f..00000000 --- a/frontend-dist/js/957.e8a16dfc.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/957.e8a16dfc.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?9e0f","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cb6d","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/MoveFileDialog.vue?cba1","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?540f","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileDirectoryDrawer.vue?256e","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?66ed","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue","webpack://sanyue_imghub/./src/components/dashboard/MobileActionSheet.vue?f2e3","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?f98e","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchTagDialog.vue?9ca8","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?6b85","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/TagManagementDialog.vue?e3f8","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8326","webpack://sanyue_imghub/./src/utils/fileIdValidator.js","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue","webpack://sanyue_imghub/./src/components/dashboard/FileDetailDialog.vue?8cda","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?0608","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue","webpack://sanyue_imghub/./src/components/dashboard/BatchActionBar.vue?ed70","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?e516","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue","webpack://sanyue_imghub/./src/components/dashboard/DashboardCheckbox.vue?06e7","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?fd3e","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue","webpack://sanyue_imghub/./src/components/dashboard/FileListItem.vue?6ed7","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?ff7f","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FileCard.vue?8969","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?8cbb","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue","webpack://sanyue_imghub/./src/components/dashboard/FolderCard.vue?a03e","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?0461","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue","webpack://sanyue_imghub/./src/components/dashboard/SkeletonLoader.vue?4854","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?005a","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue","webpack://sanyue_imghub/./src/components/dashboard/FilterDropdown.vue?09c8","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?eb45","webpack://sanyue_imghub/./src/utils/fileManager.js","webpack://sanyue_imghub/./src/utils/dashboard/rectIntersects.js","webpack://sanyue_imghub/./src/utils/dashboard/useDragSelect.js","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue","webpack://sanyue_imghub/./src/views/AdminDashBoard.vue?40d2","webpack://sanyue_imghub/./node_modules/jszip/dist/jszip.min.js","webpack://sanyue_imghub/./src/utils/pathValidator.js"],"sourcesContent":["import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: _ctx.$t('directoryTree.selectDirectory'),\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('directoryTree.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.serverError');\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = this.$t('directoryTree.authFailed');\n } else {\n this.error = this.$t('directoryTree.loadFailed');\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=62eab69a&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=62eab69a&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=62eab69a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-62eab69a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"move-file-dialog-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"move-dialog-content\"\n};\nconst _hoisted_3 = {\n class: \"move-path-input-container\"\n};\nconst _hoisted_4 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_5 = {\n class: \"dialog-footer\"\n};\nconst _hoisted_6 = {\n class: \"move-drawer-content\"\n};\nconst _hoisted_7 = {\n class: \"move-path-section\"\n};\nconst _hoisted_8 = {\n class: \"move-path-label\"\n};\nconst _hoisted_9 = {\n class: \"move-path-input-row\"\n};\nconst _hoisted_10 = {\n class: \"move-dialog-hint\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"embedded-tree-section\"\n};\nconst _hoisted_12 = {\n class: \"tree-section-header\"\n};\nconst _hoisted_13 = {\n class: \"tree-section-title\"\n};\nconst _hoisted_14 = {\n class: \"tree-container\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_16 = {\n class: \"error-text\"\n};\nconst _hoisted_17 = {\n class: \"node-label\"\n};\nconst _hoisted_18 = {\n class: \"drawer-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_dialog, {\n key: 0,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n width: \"500px\",\n \"show-close\": true,\n class: \"move-dialog\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_5, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, {\n prepend: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1)]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_DirectoryTreePicker, {\n \"current-directory\": $props.currentDirectory,\n source: \"admin\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-picker-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])]), _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t('moveFile.hint')), 1)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"])) : (_openBlock(), _createBlock(_component_el_drawer, {\n key: 1,\n modelValue: $options.dialogVisible,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $options.dialogVisible = $event),\n title: $props.isBatchMove ? _ctx.$t('moveFile.batchTitle') : _ctx.$t('moveFile.title'),\n direction: \"btt\",\n size: \"auto\",\n \"show-close\": true,\n class: \"move-drawer\",\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n onClick: $options.handleClose,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.cancel')), 1)]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n loading: $data.loading,\n onClick: $options.handleConfirm,\n class: \"footer-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.confirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString(_ctx.$t('moveFile.targetDirectory')), 1), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_input, {\n modelValue: $data.targetPath,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.targetPath = $event),\n placeholder: _ctx.$t('moveFile.targetPlaceholder'),\n class: \"move-path-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"]), _createVNode(_component_el_button, {\n class: \"directory-picker-trigger\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showTreePicker = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]), _createElementVNode(\"p\", _hoisted_10, _toDisplayString(_ctx.$t('moveFile.hintMobile')), 1)]), $data.showTreePicker ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('moveFile.selectDirectory')), 1), _createVNode(_component_el_button, {\n text: \"\",\n onClick: _cache[4] || (_cache[4] = $event => $data.showTreePicker = false)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })]), _withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_14, [$data.treeError ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_16, _toDisplayString($data.treeError), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('moveFile.retry')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleTreeNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_17, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.treeLoading]])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"onClose\"]))]);\n}","import DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'MoveFileDialog',\n components: {\n DirectoryTreePicker\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentDirectory: {\n type: String,\n default: ''\n },\n isBatchMove: {\n type: Boolean,\n default: false\n },\n initialPath: {\n type: String,\n default: '/'\n }\n },\n emits: ['update:modelValue', 'confirm', 'close'],\n data() {\n return {\n targetPath: '/',\n loading: false,\n windowWidth: window.innerWidth,\n // 移动端内嵌树相关\n showTreePicker: false,\n treeData: [],\n treeLoading: false,\n treeError: '',\n treeProps: {\n children: 'children',\n label: 'name'\n }\n };\n },\n computed: {\n dialogVisible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n isDesktop() {\n return this.windowWidth > 768;\n }\n },\n watch: {\n modelValue(newVal) {\n if (newVal) {\n this.targetPath = this.initialPath || '/';\n this.showTreePicker = false;\n }\n },\n showTreePicker(newVal) {\n if (newVal && !this.isDesktop) {\n this.fetchDirectoryTree();\n }\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n handleDirectorySelect(path) {\n this.targetPath = path;\n },\n handleConfirm() {\n this.$emit('confirm', this.targetPath);\n },\n handleClose() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n },\n // 移动端内嵌树相关方法\n async fetchDirectoryTree() {\n this.treeLoading = true;\n this.treeError = '';\n try {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.treeError = this.$t('moveFile.authFailed');\n } else {\n this.treeError = this.$t('moveFile.serverError');\n }\n return;\n }\n const data = await response.json();\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n this.treeError = this.$t('moveFile.loadTreeFailed');\n } finally {\n this.treeLoading = false;\n }\n },\n handleTreeNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.targetPath = path;\n this.showTreePicker = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MoveFileDialog.vue?vue&type=template&id=7aaa437c&scoped=true\"\nimport script from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\nexport * from \"./MoveFileDialog.vue?vue&type=script&lang=js\"\n\nimport \"./MoveFileDialog.vue?vue&type=style&index=0&id=7aaa437c&scoped=true&lang=css\"\nimport \"./MoveFileDialog.vue?vue&type=style&index=1&id=7aaa437c&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7aaa437c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"mobile-drawer-header\"\n};\nconst _hoisted_2 = {\n class: \"mobile-drawer-title\"\n};\nconst _hoisted_3 = {\n class: \"mobile-drawer-content\"\n};\nconst _hoisted_4 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"drawer-slide\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-overlay\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"mobile-drawer\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"span\", _hoisted_2, _toDisplayString(_ctx.$t('mobileDirectory.title')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"mobile-drawer-close\",\n onClick: $options.close\n }, null, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: !$props.currentPath\n }]),\n onClick: _cache[0] || (_cache[0] = $event => $options.navigate(''))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.rootDirectory')), 1)], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.pathParts, (folder, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: index,\n class: _normalizeClass([\"mobile-drawer-item\", {\n active: index === $options.pathParts.length - 1\n }]),\n style: _normalizeStyle({\n paddingLeft: (index + 1) * 16 + 16 + 'px'\n }),\n onClick: $event => $options.navigate($options.pathParts.slice(0, index + 1).join('/'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(folder), 1)], 14, _hoisted_4);\n }), 128)), $props.currentPath ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"mobile-drawer-back\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goBack && $options.goBack(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"mobile-drawer-item-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileDirectory.goBack')), 1)])) : _createCommentVNode(\"\", true)])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'MobileDirectoryDrawer',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n currentPath: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'navigate', 'goBack'],\n computed: {\n pathParts() {\n return this.currentPath.split('/').filter(Boolean);\n }\n },\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n navigate(path) {\n this.$emit('navigate', path);\n this.close();\n },\n goBack() {\n this.$emit('goBack');\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileDirectoryDrawer.vue?vue&type=template&id=3b79a1b6&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=3b79a1b6&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-3b79a1b6\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"bottom-sheet-header\"\n};\nconst _hoisted_2 = {\n class: \"bottom-sheet-title\"\n};\nconst _hoisted_3 = {\n class: \"bottom-sheet-content\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createBlock(_Teleport, {\n to: \"body\"\n }, [_createVNode(_Transition, {\n name: \"bottom-sheet\"\n }, {\n default: _withCtx(() => [$props.modelValue ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bottom-sheet-overlay\",\n onClick: _cache[9] || (_cache[9] = (...args) => $options.close && $options.close(...args))\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_1, [_cache[10] || (_cache[10] = _createElementVNode(\"div\", {\n class: \"bottom-sheet-handle\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.title), 1)]), _createElementVNode(\"div\", _hoisted_3, [!$props.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[0] || (_cache[0] = $event => $options.handleAction('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.viewDetail')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[1] || (_cache[1] = $event => $options.handleAction('copy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[2] || (_cache[2] = $event => $options.handleAction('download'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.downloadFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[3] || (_cache[3] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFile')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[4] || (_cache[4] = $event => $options.handleAction('tag'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.tagManagement')), 1)])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[5] || (_cache[5] = $event => $options.handleAction('folderCopy'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.copyLink')), 1)]), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item\",\n onClick: _cache[6] || (_cache[6] = $event => $options.handleAction('move'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('mobileAction.moveFolder')), 1)])], 64)), _createElementVNode(\"div\", {\n class: \"bottom-sheet-item bottom-sheet-danger\",\n onClick: _cache[7] || (_cache[7] = $event => $options.handleAction('delete'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n class: \"bottom-sheet-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString($props.isFolder ? _ctx.$t('mobileAction.deleteFolder') : _ctx.$t('mobileAction.deleteFile')), 1)])])])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]);\n}","export default {\n name: 'MobileActionSheet',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n title: {\n type: String,\n default: ''\n },\n isFolder: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:modelValue', 'action'],\n methods: {\n close() {\n this.$emit('update:modelValue', false);\n },\n handleAction(action) {\n this.$emit('action', action);\n this.close();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./MobileActionSheet.vue?vue&type=template&id=efef5a4c&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=efef5a4c&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-efef5a4c\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"batch-tag-container\"\n};\nconst _hoisted_2 = {\n class: \"tab-content\"\n};\nconst _hoisted_3 = {\n class: \"tab-description\"\n};\nconst _hoisted_4 = {\n class: \"input-section\"\n};\nconst _hoisted_5 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_6 = [\"onClick\"];\nconst _hoisted_7 = {\n class: \"tags-to-add-section\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_9 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_10 = {\n class: \"action-buttons\"\n};\nconst _hoisted_11 = {\n class: \"tab-content\"\n};\nconst _hoisted_12 = {\n class: \"tab-description\"\n};\nconst _hoisted_13 = {\n key: 0,\n class: \"common-tags-section\"\n};\nconst _hoisted_14 = {\n class: \"tags-container\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_16 = {\n class: \"tab-content\"\n};\nconst _hoisted_17 = {\n class: \"tab-description\"\n};\nconst _hoisted_18 = {\n class: \"action-buttons\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_alert = _resolveComponent(\"el-alert\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('batchTag.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.activeTab = $event),\n type: \"border-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.addTab'),\n name: \"add\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"p\", _hoisted_3, _toDisplayString(_ctx.$t('batchTag.addDescription', {\n count: $options.fileCount\n })), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('batchTag.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddInputTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddInputTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_6);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.pendingTags')), 1), $data.tagsToAdd.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.tagsToAdd, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.removeFromToAdd(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('batchTag.noPendingTags')), 1))]), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.executeAddTags,\n loading: $data.loading,\n disabled: $data.tagsToAdd.length === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.addToAllFiles')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"])])])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.removeTab'),\n name: \"remove\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"p\", _hoisted_12, _toDisplayString(_ctx.$t('batchTag.removeDescription')), 1), $data.commonTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('batchTag.commonTags')), 1), _createElementVNode(\"div\", _hoisted_14, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.commonTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveCommonTag(tag),\n class: \"tag-item\",\n type: \"warning\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('batchTag.noCommonTags')), 1))])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: _ctx.$t('batchTag.clearTab'),\n name: \"clear\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_16, [_createElementVNode(\"p\", _hoisted_17, _toDisplayString(_ctx.$t('batchTag.clearDescription', {\n count: $options.fileCount\n })), 1), _createVNode(_component_el_alert, {\n title: _ctx.$t('batchTag.clearWarningTitle'),\n type: \"warning\",\n description: _ctx.$t('batchTag.clearWarningDesc'),\n closable: false,\n style: {\n \"margin-bottom\": \"20px\"\n },\n center: \"\"\n }, null, 8, [\"title\", \"description\"]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"danger\",\n onClick: $options.handleClearAllTags,\n loading: $data.loading\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('batchTag.confirmClearAll')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])])])]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"modelValue\"])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport { ElMessage, ElMessageBox } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'BatchTagDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n selectedFiles: {\n type: Array,\n required: true,\n default: () => []\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n activeTab: 'add',\n inputTag: '',\n tagsToAdd: [],\n commonTags: [],\n suggestions: [],\n showSuggestions: false,\n loading: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '600px';\n },\n selectedFilesOnly() {\n // 排除文件夹,只保留文件\n return this.selectedFiles.filter(file => !file.isFolder);\n },\n fileCount() {\n return this.selectedFilesOnly.length;\n },\n fileIds() {\n return this.selectedFilesOnly.map(file => file.name);\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadCommonTags();\n } else {\n this.resetData();\n }\n },\n activeTab(newTab) {\n if (newTab === 'remove') {\n this.loadCommonTags();\n }\n }\n },\n methods: {\n resetData() {\n this.tagsToAdd = [];\n this.inputTag = '';\n this.showSuggestions = false;\n this.activeTab = 'add';\n },\n async loadCommonTags() {\n if (this.selectedFilesOnly.length === 0) {\n this.commonTags = [];\n return;\n }\n try {\n // 获取所有文件的标签\n const tagPromises = this.selectedFilesOnly.map(file => fetchWithAuth(`/api/manage/tags/${encodeURIComponent(file.name)}`, {\n method: 'GET'\n }));\n const responses = await Promise.all(tagPromises);\n const allTags = [];\n for (const response of responses) {\n if (response.ok) {\n const data = await response.json();\n allTags.push(data.tags || []);\n }\n }\n\n // 找出共有标签\n if (allTags.length > 0) {\n this.commonTags = allTags[0].filter(tag => allTags.every(tags => tags.includes(tag)));\n } else {\n this.commonTags = [];\n }\n } catch (error) {\n console.error('Error loading common tags:', error);\n ElMessage.error(this.$t('batchTag.loadCommonTagsFailed'));\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.tagsToAdd.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddInputTag();\n },\n handleAddInputTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.tagsToAdd.includes(tag)) {\n ElMessage.warning(this.$t('batchTag.tagAlreadyInList'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n this.tagsToAdd.push(tag);\n this.inputTag = '';\n this.showSuggestions = false;\n },\n removeFromToAdd(tag) {\n const index = this.tagsToAdd.indexOf(tag);\n if (index > -1) {\n this.tagsToAdd.splice(index, 1);\n }\n },\n async executeAddTags() {\n if (this.tagsToAdd.length === 0) {\n ElMessage.warning(this.$t('batchTag.pleaseAddTags'));\n return;\n }\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'add',\n tags: this.tagsToAdd\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.addSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.tagsToAdd = [];\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tags:', error);\n ElMessage.error(this.$t('batchTag.addFailed'));\n } finally {\n this.loading = false;\n }\n },\n async handleRemoveCommonTag(tag) {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.removeSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n await this.loadCommonTags();\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('batchTag.removeFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClearAllTags() {\n ElMessageBox.confirm(this.$t('batchTag.clearConfirmMessage', {\n count: this.fileCount\n }), this.$t('batchTag.clearConfirmTitle'), {\n confirmButtonText: this.$t('batchTag.clearConfirmOk'),\n cancelButtonText: this.$t('batchTag.clearConfirmCancel'),\n type: 'warning'\n }).then(() => {\n this.executeClearTags();\n }).catch(() => {\n ElMessage.info(this.$t('batchTag.clearCancelled'));\n });\n },\n async executeClearTags() {\n this.loading = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/batch', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fileIds: this.fileIds,\n action: 'set',\n tags: []\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.success || data.updated > 0) {\n ElMessage.success(this.$t('batchTag.clearSuccess', {\n count: data.updated\n }));\n this.$emit('tagsUpdated');\n this.commonTags = [];\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } else {\n throw new Error(this.$t('batchTag.clearFailed'));\n }\n } catch (error) {\n console.error('Error clearing tags:', error);\n ElMessage.error(this.$t('batchTag.clearFailed'));\n } finally {\n this.loading = false;\n }\n },\n handleClose() {\n this.visible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchTagDialog.vue?vue&type=template&id=0d04afa1&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=0d04afa1&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-0d04afa1\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, withKeys as _withKeys, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tag-management-container\"\n};\nconst _hoisted_2 = {\n class: \"input-section\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"suggestions-panel\"\n};\nconst _hoisted_4 = [\"onClick\"];\nconst _hoisted_5 = {\n class: \"current-tags-section\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_7 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_8 = {\n class: \"popular-tags-section\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"tags-container\"\n};\nconst _hoisted_10 = {\n key: 1,\n class: \"empty-message\"\n};\nconst _hoisted_11 = {\n key: 2,\n class: \"empty-message\"\n};\nconst _hoisted_12 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_Loading = _resolveComponent(\"Loading\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('tagManagement.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n onClose: $options.handleClose\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_12, [_createVNode(_component_el_button, {\n onClick: $options.handleClose\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('tagManagement.close')), 1)]),\n _: 1\n }, 8, [\"onClick\"])])]),\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_el_input, {\n modelValue: $data.inputTag,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.inputTag = $event),\n placeholder: _ctx.$t('tagManagement.inputPlaceholder'),\n onKeyup: _withKeys($options.handleAddTag, [\"enter\"]),\n onInput: $options.handleInputChange,\n clearable: \"\"\n }, {\n append: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: $options.handleAddTag,\n type: \"primary\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"plus\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\", \"onInput\"]), $data.showSuggestions && $data.suggestions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.suggestions, tag => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: tag,\n class: \"suggestion-item\",\n onClick: $event => $options.selectSuggestion(tag)\n }, _toDisplayString(tag), 9, _hoisted_4);\n }), 128))])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.currentTags')), 1), $data.currentTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n closable: \"\",\n onClose: $event => $options.handleRemoveTag(tag),\n class: \"tag-item\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClose\"]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('tagManagement.noTags')), 1))]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"h4\", null, _toDisplayString(_ctx.$t('tagManagement.popularTags')), 1), $data.popularTags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.popularTags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n onClick: $event => $options.handleAddPopularTag(tag),\n class: \"tag-item clickable\",\n type: \"info\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))])) : $data.loadingPopularTags ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createVNode(_component_el_icon, {\n class: \"is-loading\"\n }, {\n default: _withCtx(() => [_createVNode(_component_Loading)]),\n _: 1\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('tagManagement.loading')), 1)])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString(_ctx.$t('tagManagement.noPopularTags')), 1))])])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\", \"onClose\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { ElMessage } from 'element-plus';\nimport { Loading } from '@element-plus/icons-vue';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'TagManagementDialog',\n components: {\n Loading\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n fileId: {\n type: String,\n required: true\n }\n },\n emits: ['update:modelValue', 'tagsUpdated'],\n data() {\n return {\n currentTags: [],\n inputTag: '',\n suggestions: [],\n popularTags: [],\n showSuggestions: false,\n loading: false,\n loadingPopularTags: false,\n debounceTimer: null\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '90%' : '500px';\n }\n },\n watch: {\n visible(newVal) {\n if (newVal) {\n this.loadFileTags();\n this.loadPopularTags();\n }\n }\n },\n methods: {\n async loadFileTags() {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n } else {\n throw new Error('Failed to load tags');\n }\n } catch (error) {\n console.error('Error loading file tags:', error);\n ElMessage.error(this.$t('tagManagement.loadFailed'));\n }\n },\n async loadPopularTags() {\n this.loadingPopularTags = true;\n try {\n const response = await fetchWithAuth('/api/manage/tags/autocomplete?limit=20', {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.popularTags = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n }\n } catch (error) {\n console.error('Error loading popular tags:', error);\n } finally {\n this.loadingPopularTags = false;\n }\n },\n handleInputChange() {\n clearTimeout(this.debounceTimer);\n if (!this.inputTag || this.inputTag.trim().length === 0) {\n this.showSuggestions = false;\n return;\n }\n this.debounceTimer = setTimeout(() => {\n this.fetchSuggestions();\n }, 300);\n },\n async fetchSuggestions() {\n try {\n const prefix = this.inputTag.trim().toLowerCase();\n const response = await fetchWithAuth(`/api/manage/tags/autocomplete?prefix=${encodeURIComponent(prefix)}&limit=10`, {\n method: 'GET'\n });\n if (response.ok) {\n const data = await response.json();\n this.suggestions = (data.tags || []).filter(tag => !this.currentTags.includes(tag));\n this.showSuggestions = this.suggestions.length > 0;\n }\n } catch (error) {\n console.error('Error fetching suggestions:', error);\n }\n },\n selectSuggestion(tag) {\n this.inputTag = tag;\n this.showSuggestions = false;\n this.handleAddTag();\n },\n async handleAddTag() {\n const tag = this.inputTag.trim();\n if (!tag) {\n return;\n }\n if (this.currentTags.includes(tag)) {\n ElMessage.warning(this.$t('tagManagement.tagExists'));\n this.inputTag = '';\n this.showSuggestions = false;\n return;\n }\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'add',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n this.inputTag = '';\n this.showSuggestions = false;\n ElMessage.success(this.$t('tagManagement.addSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n const error = await response.json();\n throw new Error(error.message || this.$t('tagManagement.addFailed'));\n }\n } catch (error) {\n console.error('Error adding tag:', error);\n ElMessage.error(error.message || this.$t('tagManagement.addFailed'));\n }\n },\n async handleRemoveTag(tag) {\n try {\n const response = await fetchWithAuth(`/api/manage/tags/${encodeURIComponent(this.fileId)}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n action: 'remove',\n tags: [tag]\n })\n });\n if (response.ok) {\n const data = await response.json();\n this.currentTags = data.tags || [];\n ElMessage.success(this.$t('tagManagement.removeSuccess'));\n this.$emit('tagsUpdated', this.currentTags);\n\n // 重新加载常用标签\n this.loadPopularTags();\n } else {\n throw new Error(this.$t('tagManagement.removeFailed'));\n }\n } catch (error) {\n console.error('Error removing tag:', error);\n ElMessage.error(this.$t('tagManagement.removeFailed'));\n }\n },\n handleAddPopularTag(tag) {\n this.inputTag = tag;\n this.handleAddTag();\n },\n handleClose() {\n this.visible = false;\n this.inputTag = '';\n this.showSuggestions = false;\n this.currentTags = [];\n this.popularTags = [];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./TagManagementDialog.vue?vue&type=template&id=24c809e4&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=24c809e4&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-24c809e4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\";\nconst _hoisted_1 = {\n class: \"detail-actions\"\n};\nconst _hoisted_2 = {\n class: \"preview-section\"\n};\nconst _hoisted_3 = {\n class: \"preview-content\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1\n};\nconst _hoisted_7 = {\n key: 1\n};\nconst _hoisted_8 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"align-items\": \"center\",\n \"gap\": \"6px\"\n }\n};\nconst _hoisted_9 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"display\": \"flex\",\n \"flex-wrap\": \"wrap\",\n \"gap\": \"5px\"\n }\n};\nconst _hoisted_11 = {\n key: 1,\n style: {\n \"color\": \"#59636E\"\n }\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_tab_pane = _resolveComponent(\"el-tab-pane\");\n const _component_el_tabs = _resolveComponent(\"el-tabs\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_descriptions_item = _resolveComponent(\"el-descriptions-item\");\n const _component_el_tag = _resolveComponent(\"el-tag\");\n const _component_el_descriptions = _resolveComponent(\"el-descriptions\");\n const _component_el_form_item = _resolveComponent(\"el-form-item\");\n const _component_el_form = _resolveComponent(\"el-form\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: _ctx.$t('fileDetail.title'),\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $event => $options.visible = $event),\n width: $options.dialogWidth\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [!$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('download')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"download\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.download')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 1,\n type: \"primary\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.$emit('tagManagement')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"tags\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.tags')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 2,\n type: \"primary\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('block')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ban\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.blacklist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 3,\n type: \"primary\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.$emit('white')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"shield-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.whitelist')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 4,\n type: \"danger\",\n onClick: _cache[4] || (_cache[4] = $event => _ctx.$emit('delete')),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.deleteBtn')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 5,\n type: \"warning\",\n onClick: _cache[5] || (_cache[5] = $event => $options.startEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"edit\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.edit')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), !$data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 6,\n type: \"info\",\n onClick: _cache[6] || (_cache[6] = $event => $options.openRenameDialog()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"i-cursor\",\n style: {\n \"margin-right\": \"3px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.rename')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 7,\n type: \"success\",\n onClick: _cache[7] || (_cache[7] = $event => $options.saveMetadata()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\",\n loading: $data.editSaving\n }, {\n default: _withCtx(() => [!$data.editSaving ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"save\",\n style: {\n \"margin-right\": \"3px\"\n }\n })) : _createCommentVNode(\"\", true), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('fileDetail.save')), 1)]),\n _: 1\n }, 8, [\"loading\"])) : _createCommentVNode(\"\", true), $data.isEditing ? (_openBlock(), _createBlock(_component_el_button, {\n key: 8,\n onClick: _cache[8] || (_cache[8] = $event => $options.cancelEdit()),\n round: \"\",\n size: \"small\",\n class: \"detail-action\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.cancel')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true)]), _createVNode(_component_el_tabs, {\n modelValue: $data.activeTab,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.activeTab = $event),\n onTabClick: $options.handleTabClick,\n style: {\n \"margin-bottom\": \"10px\"\n }\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tab_pane, {\n label: _ctx.$t('fileDetail.originUrl'),\n name: \"originUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.originUrl,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $props.urls.originUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_tab_pane, {\n label: \"Markdown\",\n name: \"mdUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.mdUrl,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $props.urls.mdUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"HTML\",\n name: \"htmlUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.htmlUrl,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $props.urls.htmlUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tab_pane, {\n label: \"BBCode\",\n name: \"bbUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.bbUrl,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $props.urls.bbUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n }), $props.file?.metadata?.TgFileId ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 0,\n label: \"TG File ID\",\n name: \"tgId\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.tgId,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $props.urls.tgId = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3Location ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 1,\n label: \"S3 Location\",\n name: \"s3Location\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3Location,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $props.urls.S3Location = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.file?.metadata?.S3CdnFileUrl ? (_openBlock(), _createBlock(_component_el_tab_pane, {\n key: 2,\n label: \"S3 CDN URL\",\n name: \"s3CdnFileUrl\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $props.urls.S3CdnFileUrl,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $props.urls.S3CdnFileUrl = $event),\n readonly: \"\",\n onClick: $options.handleUrlClick\n }, null, 8, [\"modelValue\", \"onClick\"])]),\n _: 1\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"modelValue\", \"onTabClick\"]), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [$options.isVideo ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n src: $props.fileLink,\n autoplay: \"\",\n muted: \"\",\n loop: \"\",\n class: \"video-preview\",\n onClick: _cache[17] || (_cache[17] = (...args) => $options.openImageLink && $options.openImageLink(...args))\n }, null, 8, _hoisted_4)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"audio\", {\n key: 1,\n src: $props.fileLink,\n controls: \"\",\n autoplay: \"\",\n class: \"audio-preview\"\n }, null, 8, _hoisted_5)) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n src: $props.fileLink,\n \"preview-src-list\": [$props.fileLink],\n \"preview-teleported\": true,\n fit: \"contain\",\n lazy: \"\",\n class: \"image-preview\"\n }, null, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 3,\n icon: \"file\",\n class: \"file-icon-detail\"\n }))])]), _createVNode(_component_el_descriptions, {\n border: \"\",\n column: $options.descColumn\n }, {\n default: _withCtx(() => [_createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileNameLabel')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileName,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.editForm.FileName = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileNamePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString($props.file?.metadata?.FileName || $props.file?.name), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileType')\n }, {\n default: _withCtx(() => [$data.isEditing ? (_openBlock(), _createBlock(_component_el_input, {\n key: 0,\n modelValue: $data.editForm.FileType,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.editForm.FileType = $event),\n size: \"small\",\n placeholder: _ctx.$t('fileDetail.fileTypePlaceholder')\n }, null, 8, [\"modelValue\", \"placeholder\"])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString($props.file?.metadata?.FileType || _ctx.$t('fileDetail.unknown')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileSizeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.fileSizeDisplay), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.imageDimensions')\n }, {\n default: _withCtx(() => [$options.imageDimensions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [_createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Width) + \" × \" + _toDisplayString($props.file?.metadata?.Height), 1), _createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"display\": \"inline-flex\",\n \"align-items\": \"center\",\n \"justify-content\": \"center\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.orientationIcon), 1)]),\n _: 1\n })])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('fileDetail.noDimensions')), 1))]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadTimeLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.uploadTime), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.channelTypeAndName')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: \"info\",\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.Channel || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.ChannelName || '-'), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.accessStatusAndReview')\n }, {\n default: _withCtx(() => [_createVNode(_component_el_tag, {\n size: \"small\",\n type: $options.accessTagType,\n style: {\n \"margin-right\": \"6px\"\n }\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.accessType), 1)]),\n _: 1\n }, 8, [\"type\"]), _createElementVNode(\"span\", null, _toDisplayString($props.file?.metadata?.Label || _ctx.$t('fileDetail.noTags')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadIP')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadIP || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.uploadAddressLabel')\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($props.file?.metadata?.UploadAddress || _ctx.$t('fileDetail.unknown')), 1)]),\n _: 1\n }, 8, [\"label\"]), _createVNode(_component_el_descriptions_item, {\n label: _ctx.$t('fileDetail.fileTags')\n }, {\n default: _withCtx(() => [$props.file?.metadata?.Tags && $props.file?.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.file?.metadata?.Tags, tag => {\n return _openBlock(), _createBlock(_component_el_tag, {\n key: tag,\n size: \"small\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(tag), 1)]),\n _: 2\n }, 1024);\n }), 128))])) : (_openBlock(), _createElementBlock(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('fileDetail.noTags')), 1))]),\n _: 1\n }, 8, [\"label\"])]),\n _: 1\n }, 8, [\"column\"]), _createVNode(_component_el_dialog, {\n modelValue: $data.showRenameDialog,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.showRenameDialog = $event),\n title: _ctx.$t('fileDetail.renameTitle'),\n width: $options.dialogWidth,\n \"append-to-body\": \"\"\n }, {\n footer: _withCtx(() => [_createVNode(_component_el_button, {\n onClick: _cache[21] || (_cache[21] = $event => $options.closeRenameDialog())\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameCancel')), 1)]),\n _: 1\n }), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[22] || (_cache[22] = $event => $options.submitRename()),\n loading: $data.renameSaving,\n disabled: !$data.renameValidation.valid\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('fileDetail.renameConfirm')), 1)]),\n _: 1\n }, 8, [\"loading\", \"disabled\"])]),\n default: _withCtx(() => [_createVNode(_component_el_form, {\n onSubmit: _withModifiers($options.submitRename, [\"prevent\"])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_form_item, {\n label: _ctx.$t('fileDetail.renameLabel'),\n error: $data.renameValidation.error\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.renameForm.newFileId,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.renameForm.newFileId = $event),\n placeholder: _ctx.$t('fileDetail.renamePlaceholder'),\n onInput: $options.validateRenameInput,\n clearable: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"onInput\"])]),\n _: 1\n }, 8, [\"label\", \"error\"])]),\n _: 1\n }, 8, [\"onSubmit\"])]),\n _: 1\n }, 8, [\"modelValue\", \"title\", \"width\"])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]);\n}","/**\r\n * File_ID 验证器模块\r\n * 提供 File_ID 格式验证功能,用于重命名操作的前端校验\r\n * 非法字符规则复用 pathValidator 的字符集\r\n */\r\n\r\n/**\r\n * 非法字符正则表达式\r\n * 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n * 与 pathValidator.js 保持一致\r\n */\r\nconst INVALID_CHARS = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n\r\n/**\r\n * 验证 File_ID 格式\r\n * @param {string} newFileId - 新的 File_ID\r\n * @param {string} currentFileId - 当前 File_ID\r\n * @returns {{ valid: boolean, error?: string }}\r\n */\r\nexport function validateFileId(newFileId, currentFileId) {\r\n // 1. 空值/纯空白检测\r\n if (!newFileId || newFileId.trim() === '') {\r\n return {\r\n valid: false,\r\n error: '文件名不能为空'\r\n };\r\n }\r\n\r\n // 2. 与当前 File_ID 相同检测\r\n if (newFileId === currentFileId) {\r\n return {\r\n valid: false,\r\n error: '文件名未发生变化'\r\n };\r\n }\r\n\r\n // 3. 路径穿越检测\r\n if (newFileId.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 3.5 单独的 . 路径段检测(仅检查 /./ 或开头 ./,不检查末尾以允许继续输入如 .123)\r\n if (/\\/\\.\\//.test(newFileId) || /^\\.\\//.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 4. 非法字符检测(复用 pathValidator 的字符规则)\r\n if (INVALID_CHARS.test(newFileId)) {\r\n return {\r\n valid: false,\r\n error: '文件名包含非法字符,请使用合法的文件名格式'\r\n };\r\n }\r\n\r\n // 5. 连续斜杠检测\r\n if (newFileId.includes('//')) {\r\n return {\r\n valid: false,\r\n error: '文件名不能包含连续的斜杠'\r\n };\r\n }\r\n\r\n return { valid: true };\r\n}\r\n","import { ElMessage } from 'element-plus';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFileId } from '@/utils/fileIdValidator';\nexport default {\n name: 'FileDetailDialog',\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n file: {\n type: Object,\n default: null\n },\n fileLink: {\n type: String,\n default: ''\n },\n urls: {\n type: Object,\n default: () => ({\n originUrl: '',\n mdUrl: '',\n htmlUrl: '',\n bbUrl: '',\n tgId: '',\n S3Location: '',\n S3CdnFileUrl: ''\n })\n }\n },\n emits: ['update:modelValue', 'download', 'tagManagement', 'block', 'white', 'delete', 'metadataUpdated', 'fileRenamed'],\n watch: {\n visible(val) {\n if (!val) {\n // 关闭弹窗时退出编辑状态\n this.isEditing = false;\n this.editSaving = false;\n }\n }\n },\n data() {\n return {\n activeTab: 'originUrl',\n isEditing: false,\n editForm: {\n FileName: '',\n FileType: ''\n },\n editSaving: false,\n showRenameDialog: false,\n renameForm: {\n newFileId: ''\n },\n renameValidation: {\n valid: true,\n error: ''\n },\n renameSaving: false\n };\n },\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth < 768 ? '95%' : '900px';\n },\n descColumn() {\n return window.innerWidth < 768 ? 1 : 2;\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.file?.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.file?.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n uploadTime() {\n if (this.file?.metadata?.TimeStamp) {\n return new Date(this.file.metadata.TimeStamp).toLocaleString();\n }\n return this.$t('fileDetail.unknown');\n },\n accessType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return this.$t('fileDetail.accessNormalWhitelist');\n if (listType === 'Block') return this.$t('fileDetail.accessBlockedBlacklist');\n if (label === 'adult') return this.$t('fileDetail.accessBlockedReview');\n return this.$t('fileDetail.accessNormal');\n },\n accessTagType() {\n const listType = this.file?.metadata?.ListType;\n const label = this.file?.metadata?.Label;\n if (listType === 'White') return 'success';\n if (listType === 'Block') return 'danger';\n if (label === 'adult') return 'danger';\n return 'success';\n },\n imageDimensions() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (width && height) return true;\n return null;\n },\n orientationIcon() {\n const width = this.file?.metadata?.Width;\n const height = this.file?.metadata?.Height;\n if (!width || !height) return '';\n const ratio = width / height;\n if (ratio > 1.1) return this.$t('fileDetail.orientationLandscape');\n if (ratio < 0.9) return this.$t('fileDetail.orientationPortrait');\n return this.$t('fileDetail.orientationSquare');\n },\n fileSizeDisplay() {\n const sizeBytes = this.file?.metadata?.FileSizeBytes;\n const sizeMB = this.file?.metadata?.FileSize;\n if (sizeBytes) {\n // 根据大小选择合适的单位\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(2)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return this.$t('fileDetail.unknown');\n }\n },\n methods: {\n handleVideoClick(e) {\n const video = e.target;\n if (video.paused) video.play();else video.pause();\n },\n handleTabClick() {},\n handleUrlClick(e) {\n const input = e.target;\n input.select();\n navigator.clipboard.writeText(input.value).then(() => {\n ElMessage.success(this.$t('fileDetail.linkCopied'));\n });\n },\n openImageLink() {\n if (this.fileLink) {\n window.open(this.fileLink, '_blank');\n }\n },\n startEdit() {\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.isEditing = true;\n },\n cancelEdit() {\n this.isEditing = false;\n this.editForm.FileName = this.file?.metadata?.FileName || '';\n this.editForm.FileType = this.file?.metadata?.FileType || '';\n this.editSaving = false;\n },\n async saveMetadata() {\n this.editSaving = true;\n try {\n const fileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/metadata/${fileId}`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n FileName: this.editForm.FileName,\n FileType: this.editForm.FileType\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.metadataSaved'));\n this.isEditing = false;\n this.$emit('metadataUpdated', fileId, data.metadata);\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n }\n } catch (error) {\n console.error('Error saving metadata:', error);\n ElMessage.error(error.message || this.$t('fileDetail.metadataSaveFailed'));\n } finally {\n this.editSaving = false;\n }\n },\n openRenameDialog() {\n this.renameForm.newFileId = this.file?.name || '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n this.showRenameDialog = true;\n },\n closeRenameDialog() {\n this.showRenameDialog = false;\n this.renameForm.newFileId = '';\n this.renameValidation = {\n valid: true,\n error: ''\n };\n },\n validateRenameInput() {\n const result = validateFileId(this.renameForm.newFileId, this.file?.name || '');\n this.renameValidation = {\n valid: result.valid,\n error: result.error || ''\n };\n },\n async submitRename() {\n if (this.renameSaving) return;\n\n // Validate input first\n this.validateRenameInput();\n if (!this.renameValidation.valid) {\n return;\n }\n this.renameSaving = true;\n try {\n const oldFileId = this.file.name;\n const response = await fetchWithAuth(`/api/manage/rename/${oldFileId}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n newFileId: this.renameForm.newFileId\n })\n });\n if (response.ok) {\n const data = await response.json();\n ElMessage.success(this.$t('fileDetail.renameSuccess'));\n this.showRenameDialog = false;\n this.$emit('fileRenamed', oldFileId, this.renameForm.newFileId, data.metadata);\n } else if (response.status === 409) {\n // Conflict — target File_ID already exists\n this.renameValidation = {\n valid: false,\n error: this.$t('fileDetail.renameConflict')\n };\n } else {\n const error = await response.json().catch(() => ({}));\n throw new Error(error.message || this.$t('fileDetail.renameFailed'));\n }\n } catch (error) {\n console.error('Error renaming file:', error);\n ElMessage.error(error.message || this.$t('fileDetail.renameFailed'));\n } finally {\n this.renameSaving = false;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileDetailDialog.vue?vue&type=template&id=38a97614&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=38a97614&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-38a97614\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Transition as _Transition } from \"vue\";\nconst _hoisted_1 = {\n key: 0,\n class: \"batch-floating-bar\"\n};\nconst _hoisted_2 = {\n class: \"batch-selection-summary\"\n};\nconst _hoisted_3 = {\n class: \"batch-selection-count\"\n};\nconst _hoisted_4 = {\n class: \"batch-floating-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createBlock(_Transition, {\n name: \"batch-toolbar\"\n }, {\n default: _withCtx(() => [$props.selectedCount > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.clearSelection'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"batch-floating-btn ghost\",\n \"aria-label\": _ctx.$t('dashboard.clearSelection'),\n onClick: $options.handleClear\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\",\n class: \"batch-floating-icon\"\n })]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: `${$props.selectedCount} ${_ctx.$t('dashboard.selectedItems')}`,\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($props.selectedCount), 1)])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _cache[0] || (_cache[0] = _createElementVNode(\"span\", {\n class: \"batch-toolbar-divider\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.actions, action => {\n return _openBlock(), _createBlock(_component_el_tooltip, {\n key: action.command,\n disabled: $options.disableTooltip,\n content: _ctx.$t(action.label),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"batch-floating-btn\", action.className]),\n \"aria-label\": _ctx.$t(action.label),\n onClick: $event => $options.handleAction(action.command)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: action.icon,\n class: \"batch-floating-icon\"\n }, null, 8, [\"icon\"])]),\n _: 2\n }, 1032, [\"class\", \"aria-label\", \"onClick\"])]),\n _: 2\n }, 1032, [\"disabled\", \"content\"]);\n }), 128))])])) : _createCommentVNode(\"\", true)]),\n _: 1\n });\n}","export default {\n name: 'BatchActionBar',\n props: {\n selectedCount: {\n type: Number,\n required: true\n }\n },\n emits: ['action', 'clear'],\n data() {\n return {\n actions: [{\n command: 'copy',\n label: 'dashboard.copy',\n icon: 'copy',\n className: 'copy'\n }, {\n command: 'download',\n label: 'dashboard.download',\n icon: 'download',\n className: 'download'\n }, {\n command: 'move',\n label: 'dashboard.move',\n icon: 'file-export',\n className: 'move'\n }, {\n command: 'tagManagement',\n label: 'dashboard.tagManagement',\n icon: 'tags',\n className: 'tag'\n }, {\n command: 'ban',\n label: 'dashboard.addToBlacklist',\n icon: 'ban',\n className: 'ban'\n }, {\n command: 'white',\n label: 'dashboard.addToWhitelist',\n icon: 'shield-alt',\n className: 'white'\n }, {\n command: 'delete',\n label: 'dashboard.delete',\n icon: 'trash-alt',\n className: 'danger'\n }]\n };\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n }\n },\n methods: {\n handleAction(command) {\n this.$emit('action', command);\n },\n handleClear() {\n this.$emit('clear');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BatchActionBar.vue?vue&type=template&id=6de9da06&scoped=true\"\nimport script from \"./BatchActionBar.vue?vue&type=script&lang=js\"\nexport * from \"./BatchActionBar.vue?vue&type=script&lang=js\"\n\nimport \"./BatchActionBar.vue?vue&type=style&index=0&id=6de9da06&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-6de9da06\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, withKeys as _withKeys, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"aria-checked\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass([\"dashboard-checkbox\", [`dashboard-checkbox--${$props.variant}`, {\n 'checked': $props.checked,\n 'indeterminate': $props.indeterminate && !$props.checked\n }]]),\n role: \"checkbox\",\n \"aria-checked\": $options.ariaChecked,\n tabindex: \"0\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleClick && $options.handleClick(...args)),\n onKeydown: [_cache[1] || (_cache[1] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"enter\"])), _cache[2] || (_cache[2] = _withKeys(_withModifiers((...args) => $options.handleClick && $options.handleClick(...args), [\"prevent\"]), [\"space\"]))]\n }, [$props.checked ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"check\",\n class: \"dashboard-checkbox-mark\"\n })) : $props.indeterminate ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"minus\",\n class: \"dashboard-checkbox-mark\"\n })) : _createCommentVNode(\"\", true)], 42, _hoisted_1);\n}","export default {\n name: 'DashboardCheckbox',\n props: {\n checked: {\n type: Boolean,\n default: false\n },\n indeterminate: {\n type: Boolean,\n default: false\n },\n variant: {\n type: String,\n default: 'list',\n validator: value => ['list', 'breadcrumb'].includes(value)\n }\n },\n emits: ['click'],\n computed: {\n ariaChecked() {\n if (this.checked) return 'true';\n if (this.indeterminate) return 'mixed';\n return 'false';\n }\n },\n methods: {\n handleClick(event) {\n this.$emit('click', event);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardCheckbox.vue?vue&type=template&id=f8222714&scoped=true\"\nimport script from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardCheckbox.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardCheckbox.vue?vue&type=style&index=0&id=f8222714&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-f8222714\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, normalizeStyle as _normalizeStyle, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = [\"src\"];\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n class: \"filename-start\"\n};\nconst _hoisted_6 = {\n class: \"filename-end\"\n};\nconst _hoisted_7 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_8 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_9 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_10 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_11 = {\n key: 0,\n class: \"channel-name-box\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_13 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_14 = {\n key: 0,\n class: \"address-box\"\n};\nconst _hoisted_15 = {\n key: 1,\n class: \"list-empty\"\n};\nconst _hoisted_16 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_17 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_18 = {\n class: \"list-col list-col-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\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[8] || (_cache[8] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[9] || (_cache[9] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[10] || (_cache[10] = $event => _ctx.$emit('touchmove', $event))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createVNode(_component_DashboardCheckbox, {\n checked: $data.localSelected,\n onClick: _withModifiers($options.toggleSelect, [\"stop\"])\n }, null, 8, [\"checked\", \"onClick\"])]), _createElementVNode(\"div\", {\n class: \"list-col list-col-preview\",\n onClick: _cache[0] || (_cache[0] = (...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[1] || (_cache[1] = (...args) => $options.handlePreviewClick && $options.handlePreviewClick(...args))\n }, [_createElementVNode(\"span\", {\n class: \"filename-ellipsis\",\n title: $options.displayName\n }, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString($options.fileNameStart), 1), _createElementVNode(\"span\", _hoisted_6, _toDisplayString($options.fileNameEnd), 1)], 8, _hoisted_4)]), _createElementVNode(\"div\", _hoisted_7, [!$options.isFolder && $props.item.metadata?.Tags && $props.item.metadata.Tags.length > 0 ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.item.metadata.Tags.slice(0, 3), (tag, tagIndex) => {\n return _openBlock(), _createElementBlock(\"span\", {\n key: tagIndex,\n class: \"color-tag\",\n style: _normalizeStyle({\n background: $options.getTagColor(tagIndex)\n })\n }, _toDisplayString(tag), 5);\n }), 128)), $props.item.metadata.Tags.length > 3 ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"color-tag color-tag-more\",\n style: _normalizeStyle({\n background: $options.getTagColor(3)\n })\n }, \"+\" + _toDisplayString($props.item.metadata.Tags.length - 3), 5)) : _createCommentVNode(\"\", true)], 64)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"-\"))]), _createElementVNode(\"div\", _hoisted_9, _toDisplayString($options.isFolder ? '-' : $props.item.metadata?.Channel || $props.item.channelTag || '-'), 1), _createElementVNode(\"div\", _hoisted_10, [!$options.isFolder && $props.item.metadata?.ChannelName ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, _toDisplayString($props.item.metadata.ChannelName), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_12, \"-\"))]), _createElementVNode(\"div\", _hoisted_13, [!$options.isFolder && $props.item.metadata?.UploadIP ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, _toDisplayString($props.item.metadata.UploadIP), 1)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_15, \"-\"))]), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.isFolder ? '-' : $options.fileSizeDisplay), 1), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.uploadDate), 1), _createElementVNode(\"div\", _hoisted_18, [!$options.isFolder ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[2] || (_cache[2] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('folderCopy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"content\"]), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn\",\n onClick: _cache[6] || (_cache[6] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"content\"])], 64)), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"list-action-btn list-action-danger\",\n onClick: _cache[7] || (_cache[7] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"content\"])])], 32);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nexport default {\n name: 'FileListItem',\n components: {\n DashboardCheckbox\n },\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n default: ''\n }\n },\n emits: ['update:selected', 'enter', 'detail', 'copy', 'folderCopy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n tagColors: ['#f472b6', '#a78bfa', '#60a5fa', '#34d399']\n };\n },\n computed: {\n isFolder() {\n // 检查 isFolder 属性或名称以 / 结尾\n return this.item.isFolder || this.item.name?.endsWith('/');\n },\n isVideo() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isImage() {\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp');\n },\n displayName() {\n if (this.isFolder) {\n const parts = this.item.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.item.name;\n }\n return this.item.metadata?.FileName || this.getFileName(this.item.name);\n },\n fileNameStart() {\n const name = this.displayName;\n if (name.length <= 20) return name;\n return name.slice(0, -8);\n },\n fileNameEnd() {\n const name = this.displayName;\n if (name.length <= 20) return '';\n return name.slice(-8);\n },\n uploadDate() {\n if (this.item.uploaded) {\n return new Date(this.item.uploaded).toLocaleDateString();\n }\n if (this.item.metadata?.TimeStamp) {\n return new Date(this.item.metadata.TimeStamp).toLocaleDateString();\n }\n return '-';\n },\n fileSizeDisplay() {\n const sizeBytes = this.item.metadata?.FileSizeBytes;\n const sizeMB = this.item.metadata?.FileSize;\n if (sizeBytes) {\n if (sizeBytes < 1024) {\n return `${sizeBytes} B`;\n } else if (sizeBytes < 1024 * 1024) {\n return `${(sizeBytes / 1024).toFixed(1)} KB`;\n } else {\n return `${(sizeBytes / 1024 / 1024).toFixed(2)} MB`;\n }\n } else if (sizeMB) {\n return `${sizeMB} MB`;\n }\n return '-';\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n },\n methods: {\n toggleSelect() {\n this.localSelected = !this.localSelected;\n this.$emit('update:selected', this.localSelected);\n },\n handlePreviewClick() {\n if (this.isFolder) {\n this.$emit('enter');\n } else {\n this.$emit('detail');\n }\n },\n getFileName(name) {\n const parts = (name || '').split('/');\n return parts[parts.length - 1];\n },\n getTagColor(index) {\n return this.tagColors[index % this.tagColors.length];\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileListItem.vue?vue&type=template&id=4b029ac8&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=4b029ac8&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-4b029ac8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, withModifiers as _withModifiers, withCtx as _withCtx, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"file-short-info\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"success-tag\"\n};\nconst _hoisted_3 = {\n key: 1,\n class: \"fail-tag\"\n};\nconst _hoisted_4 = {\n key: 2,\n class: \"success-tag\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"primary-tag\"\n};\nconst _hoisted_6 = {\n key: 0,\n style: {\n \"margin-left\": \"2px\"\n }\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"skeleton-wrapper\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = {\n class: \"error-text\"\n};\nconst _hoisted_11 = {\n key: 3,\n class: \"file-preview\"\n};\nconst _hoisted_12 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_13 = {\n class: \"file-name-row\"\n};\nconst _hoisted_14 = {\n class: \"file-name\"\n};\nconst _hoisted_15 = {\n class: \"action-bar\"\n};\nconst _hoisted_16 = {\n class: \"action-bar-left\"\n};\nconst _hoisted_17 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card\",\n onTouchstart: _cache[17] || (_cache[17] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[18] || (_cache[18] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[19] || (_cache[19] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", _hoisted_1, [$props.item.metadata?.ListType === 'White' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _toDisplayString($options.channelTag), 1)) : $props.item.metadata?.ListType === 'Block' || $props.item.metadata?.Label === 'adult' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString($options.channelTag), 1)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString($options.channelTag), 1)), $props.item.metadata?.Tags && $props.item.metadata?.Tags.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_createVNode(_component_font_awesome_icon, {\n icon: \"tag\",\n style: {\n \"margin-right\": \"3px\",\n \"font-size\": \"12px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString($props.item.metadata.Tags[0]) + \" \", 1), $props.item.metadata.Tags.length > 1 ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" (+\" + _toDisplayString($props.item.metadata.Tags.length - 1) + \") \", 1)) : _createCommentVNode(\"\", true)])) : _createCommentVNode(\"\", true)]), $options.isVideo ? (_openBlock(), _createElementBlock(_Fragment, {\n key: 0\n }, [$data.videoLoading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7)) : $data.videoError ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"error-wrapper\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-triangle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])) : _createCommentVNode(\"\", true), _withDirectives(_createElementVNode(\"video\", {\n src: $props.fileLink,\n muted: \"\",\n loop: \"\",\n preload: \"metadata\",\n class: \"video-preview\",\n onClick: _cache[3] || (_cache[3] = (...args) => $options.handleVideoClick && $options.handleVideoClick(...args)),\n onMouseenter: _cache[4] || (_cache[4] = $event => $options.handleVideoHover($event, true)),\n onMouseleave: _cache[5] || (_cache[5] = $event => $options.handleVideoHover($event, false)),\n onFullscreenchange: _cache[6] || (_cache[6] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onWebkitfullscreenchange: _cache[7] || (_cache[7] = (...args) => $options.handleFullscreenChange && $options.handleFullscreenChange(...args)),\n onLoadeddata: _cache[8] || (_cache[8] = $event => $data.videoLoading = false),\n onError: _cache[9] || (_cache[9] = (...args) => $options.handleVideoError && $options.handleVideoError(...args))\n }, null, 40, _hoisted_9), [[_vShow, !$data.videoLoading && !$data.videoError]])], 64)) : $options.isAudio ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"file-preview audio-card-preview\",\n onClick: _cache[10] || (_cache[10] = $event => _ctx.$emit('detail'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"music\",\n class: \"file-icon audio-icon\"\n })])) : $options.isImage ? (_openBlock(), _createBlock(_component_el_image, {\n key: 2,\n \"preview-teleported\": true,\n src: $props.fileLink,\n \"preview-src-list\": $props.previewSrcList,\n fit: \"cover\",\n lazy: \"\",\n decoding: \"async\",\n class: \"image-preview\"\n }, {\n placeholder: _withCtx(() => [...(_cache[20] || (_cache[20] = [_createElementVNode(\"div\", {\n class: \"skeleton-wrapper\"\n }, null, -1)]))]),\n error: _withCtx(() => [_createElementVNode(\"div\", {\n class: \"error-wrapper\",\n onClick: _cache[11] || (_cache[11] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"image\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('dashboard.loadFailed')), 1)])]),\n _: 1\n }, 8, [\"src\", \"preview-src-list\"])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"span\", _hoisted_14, _toDisplayString($options.displayName), 1)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.detail'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[12] || (_cache[12] = _withModifiers($event => _ctx.$emit('detail'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"info-circle\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]), _createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[13] || (_cache[13] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[14] || (_cache[14] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.downloadFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[15] || (_cache[15] = _withModifiers($event => _ctx.$emit('download'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"download\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[16] || (_cache[16] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])])]),\n _: 1\n });\n}","export default {\n name: 'FileCard',\n props: {\n item: {\n type: Object,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n fileLink: {\n type: String,\n required: true\n },\n previewSrcList: {\n type: Array,\n default: () => []\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'detail', 'copy', 'move', 'delete', 'download', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected,\n videoLoading: true,\n videoError: false\n };\n },\n computed: {\n channelTag() {\n return this.item.channelTag || '';\n },\n isVideo() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('video')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp4') || name.endsWith('.webm') || name.endsWith('.mov') || name.endsWith('.avi');\n },\n isAudio() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('audio')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.mp3') || name.endsWith('.wav') || name.endsWith('.ogg') || name.endsWith('.flac');\n },\n isImage() {\n // 先通过 content-type 判断\n const fileType = this.item.metadata?.FileType?.toLowerCase() || '';\n if (fileType.includes('image')) return true;\n // 再通过文件后缀判断\n const name = this.item.name?.toLowerCase() || '';\n return name.endsWith('.jpg') || name.endsWith('.jpeg') || name.endsWith('.png') || name.endsWith('.gif') || name.endsWith('.webp') || name.endsWith('.svg') || name.endsWith('.bmp') || name.endsWith('.avif') || name.endsWith('.heic') || name.endsWith('.heif');\n },\n displayName() {\n const fileName = this.item.metadata?.FileName || this.item.name || '';\n const parts = fileName.split('/');\n return parts[parts.length - 1];\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n },\n fileLink() {\n // 链接变化时重置加载状态\n this.videoLoading = true;\n this.videoError = false;\n }\n },\n methods: {\n handleVideoError() {\n this.videoLoading = false;\n this.videoError = true;\n },\n handleVideoClick(e) {\n const video = e.target;\n if (video.requestFullscreen) {\n video.requestFullscreen();\n } else if (video.webkitRequestFullscreen) {\n video.webkitRequestFullscreen();\n } else if (video.mozRequestFullScreen) {\n video.mozRequestFullScreen();\n } else if (video.msRequestFullscreen) {\n video.msRequestFullscreen();\n }\n },\n handleFullscreenChange(e) {\n const video = e.target;\n const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n if (isFullscreen) {\n // 进入全屏:取消静音和循环\n video.muted = false;\n video.loop = false;\n } else {\n // 退出全屏:恢复静音和循环,暂停并重置\n video.muted = true;\n video.loop = true;\n video.pause();\n video.currentTime = 0;\n }\n },\n handleVideoHover(e, isEnter) {\n const video = e.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FileCard.vue?vue&type=template&id=12b39bad&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=12b39bad&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-12b39bad\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"card-bottom-overlay\"\n};\nconst _hoisted_2 = {\n class: \"file-name-row\"\n};\nconst _hoisted_3 = {\n class: \"file-name\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"action-bar\"\n};\nconst _hoisted_5 = {\n class: \"action-bar-right\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_card = _resolveComponent(\"el-card\");\n return _openBlock(), _createBlock(_component_el_card, {\n class: \"img-card folder-card\",\n onTouchstart: _cache[6] || (_cache[6] = $event => _ctx.$emit('touchstart', $event)),\n onTouchend: _cache[7] || (_cache[7] = $event => _ctx.$emit('touchend', $event)),\n onTouchmove: _cache[8] || (_cache[8] = $event => _ctx.$emit('touchmove', $event))\n }, {\n default: _withCtx(() => [_createVNode(_component_el_checkbox, {\n modelValue: $data.localSelected,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localSelected = $event),\n onChange: _cache[1] || (_cache[1] = $event => _ctx.$emit('update:selected', $data.localSelected))\n }, null, 8, [\"modelValue\"]), _createElementVNode(\"div\", {\n class: \"folder-icon\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.$emit('enter'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"folder-icon-svg\"\n })]), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"span\", _hoisted_3, _toDisplayString($options.folderName), 1)]), $props.showActions ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_cache[9] || (_cache[9] = _createElementVNode(\"div\", {\n class: \"action-bar-left\"\n }, null, -1)), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.copyLink'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[3] || (_cache[3] = _withModifiers($event => _ctx.$emit('copy'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.moveFile'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn\",\n onClick: _cache[4] || (_cache[4] = _withModifiers($event => _ctx.$emit('move'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"file-export\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $props.disableTooltip,\n content: _ctx.$t('dashboard.delete'),\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"action-btn action-btn-danger\",\n onClick: _cache[5] || (_cache[5] = _withModifiers($event => _ctx.$emit('delete'), [\"stop\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])) : _createCommentVNode(\"\", true)])]),\n _: 1\n });\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nexport default {\n name: 'FolderCard',\n props: {\n name: {\n type: String,\n required: true\n },\n selected: {\n type: Boolean,\n default: false\n },\n showActions: {\n type: Boolean,\n default: true\n },\n disableTooltip: {\n type: Boolean,\n default: false\n }\n },\n emits: ['update:selected', 'enter', 'copy', 'move', 'delete', 'touchstart', 'touchend', 'touchmove'],\n data() {\n return {\n localSelected: this.selected\n };\n },\n computed: {\n folderName() {\n const parts = this.name.split('/').filter(Boolean);\n return parts[parts.length - 1] || this.name;\n }\n },\n watch: {\n selected(val) {\n this.localSelected = val;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FolderCard.vue?vue&type=template&id=e3ec6a12&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=e3ec6a12&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-e3ec6a12\"]])\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=ef863880&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=ef863880&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-ef863880\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"el-dropdown-link filter-trigger\"\n};\nconst _hoisted_2 = {\n class: \"filter-section\"\n};\nconst _hoisted_3 = {\n class: \"filter-title\"\n};\nconst _hoisted_4 = {\n class: \"filter-options\"\n};\nconst _hoisted_5 = {\n class: \"filter-section\"\n};\nconst _hoisted_6 = {\n class: \"filter-title\"\n};\nconst _hoisted_7 = {\n class: \"filter-options\"\n};\nconst _hoisted_8 = {\n class: \"filter-section\"\n};\nconst _hoisted_9 = {\n class: \"filter-title\"\n};\nconst _hoisted_10 = {\n class: \"filter-options\"\n};\nconst _hoisted_11 = {\n class: \"filter-section\"\n};\nconst _hoisted_12 = {\n class: \"filter-title\"\n};\nconst _hoisted_13 = {\n class: \"filter-options\"\n};\nconst _hoisted_14 = {\n class: \"filter-section\"\n};\nconst _hoisted_15 = {\n class: \"filter-title\"\n};\nconst _hoisted_16 = {\n class: \"filter-options\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"filter-section\"\n};\nconst _hoisted_18 = {\n class: \"filter-title\"\n};\nconst _hoisted_19 = {\n class: \"filter-options\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"channel-divider\"\n};\nconst _hoisted_21 = {\n class: \"channel-group-title\"\n};\nconst _hoisted_22 = {\n class: \"filter-actions\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_badge = _resolveComponent(\"el-badge\");\n const _component_el_checkbox = _resolveComponent(\"el-checkbox\");\n const _component_el_checkbox_group = _resolveComponent(\"el-checkbox-group\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n return _openBlock(), _createBlock(_component_el_dropdown, {\n \"hide-on-click\": false,\n trigger: \"click\",\n class: \"filter-dropdown\",\n ref: \"dropdownRef\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"filter-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('filter.accessStatus')), 1), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.accessStatus,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.localFilters.accessStatus = $event),\n onChange: _cache[1] || (_cache[1] = $event => $options.handleFilterChange('accessStatus'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.accessStatusOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'accessStatus-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t('filter.blackWhiteList')), 1), _createElementVNode(\"div\", _hoisted_7, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.listType,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.localFilters.listType = $event),\n onChange: _cache[3] || (_cache[3] = $event => $options.handleFilterChange('listType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.listTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'listType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, _toDisplayString(_ctx.$t('filter.reviewResult')), 1), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.label,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.localFilters.label = $event),\n onChange: _cache[5] || (_cache[5] = $event => $options.handleFilterChange('label'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.labelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'label-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, _toDisplayString(_ctx.$t('filter.fileType')), 1), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.fileType,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.localFilters.fileType = $event),\n onChange: _cache[7] || (_cache[7] = $event => $options.handleFilterChange('fileType'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.fileTypeOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'fileType-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, _toDisplayString(_ctx.$t('filter.channelType')), 1), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channel,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.localFilters.channel = $event),\n onChange: _cache[9] || (_cache[9] = $event => $options.handleFilterChange('channel'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.channelOptions, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channel-' + option.value,\n label: option.value\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.label), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])]), $props.channelNameOptions.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.$t('filter.channelName')), 1), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_checkbox_group, {\n modelValue: $data.localFilters.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.localFilters.channelName = $event),\n onChange: _cache[11] || (_cache[11] = $event => $options.handleFilterChange('channelName'))\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedChannelNames, (group, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: 'group-' + group.type\n }, [index > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(group.typeLabel), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.channels, option => {\n return _openBlock(), _createBlock(_component_el_checkbox, {\n key: 'channelName-' + option.type + '-' + option.name,\n label: option.type + ':' + option.name\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(option.name), 1)]),\n _: 2\n }, 1032, [\"label\"]);\n }), 128))], 64);\n }), 128))]),\n _: 1\n }, 8, [\"modelValue\"])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_createVNode(_component_el_button, {\n size: \"small\",\n onClick: $options.clearFilters,\n disabled: $options.activeFilterCount === 0\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('filter.clearFilters')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"])])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_1, [_createVNode(_component_el_badge, {\n value: $options.activeFilterCount,\n hidden: $options.activeFilterCount === 0,\n class: \"filter-badge\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"filter\",\n class: \"header-icon\"\n })]),\n _: 1\n }, 8, [\"value\", \"hidden\"])])]),\n _: 1\n }, 512);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nexport default {\n name: 'FilterDropdown',\n props: {\n filters: {\n type: Object,\n default: () => ({\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'none'\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n })\n },\n channelNameOptions: {\n type: Array,\n default: () => []\n }\n },\n emits: ['update:filters', 'change'],\n data() {\n return {\n localFilters: {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n }\n };\n },\n computed: {\n // 访问状态选项(综合判断 ListType 和 Label)\n // 正常: ListType !== 'Block' && Label !== 'adult'\n // 已屏蔽: ListType === 'Block' || Label === 'adult'\n accessStatusOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.blocked'),\n value: 'blocked'\n }];\n },\n // 黑白名单选项(直接使用 ListType 字段值)\n listTypeOptions() {\n return [{\n label: this.$t('filter.whiteList'),\n value: 'White'\n }, {\n label: this.$t('filter.blackList'),\n value: 'Block'\n }, {\n label: this.$t('filter.notSet'),\n value: 'None'\n }];\n },\n // 审查结果选项\n labelOptions() {\n return [{\n label: this.$t('filter.normal'),\n value: 'normal'\n }, {\n label: this.$t('filter.teenContent'),\n value: 'teen'\n }, {\n label: this.$t('filter.adultContent'),\n value: 'adult'\n }];\n },\n fileTypeOptions() {\n return [{\n label: this.$t('filter.image'),\n value: 'image'\n }, {\n label: this.$t('filter.video'),\n value: 'video'\n }, {\n label: this.$t('filter.audio'),\n value: 'audio'\n }, {\n label: this.$t('filter.other'),\n value: 'other'\n }];\n },\n channelOptions() {\n return [{\n label: 'Telegram',\n value: 'TelegramNew'\n }, {\n label: 'Cloudflare R2',\n value: 'CloudflareR2'\n }, {\n label: 'S3',\n value: 'S3'\n }, {\n label: 'Discord',\n value: 'Discord'\n }, {\n label: 'HuggingFace',\n value: 'HuggingFace'\n }, {\n label: 'WebDAV',\n value: 'WebDAV'\n }, {\n label: this.$t('filter.externalLink'),\n value: 'External'\n }];\n },\n activeFilterCount() {\n return Object.values(this.localFilters).reduce((count, arr) => count + arr.length, 0);\n },\n // 按类型分组渠道名称\n groupedChannelNames() {\n const groups = {};\n this.channelNameOptions.forEach(option => {\n if (!groups[option.type]) {\n groups[option.type] = {\n type: option.type,\n typeLabel: option.typeLabel,\n channels: []\n };\n }\n groups[option.type].channels.push(option);\n });\n return Object.values(groups);\n }\n },\n watch: {\n filters: {\n handler(newFilters) {\n this.localFilters = {\n accessStatus: Array.isArray(newFilters.accessStatus) ? [...newFilters.accessStatus] : [],\n listType: Array.isArray(newFilters.listType) ? [...newFilters.listType] : [],\n label: Array.isArray(newFilters.label) ? [...newFilters.label] : [],\n fileType: Array.isArray(newFilters.fileType) ? [...newFilters.fileType] : [],\n channel: Array.isArray(newFilters.channel) ? [...newFilters.channel] : [],\n channelName: Array.isArray(newFilters.channelName) ? [...newFilters.channelName] : []\n };\n },\n immediate: true,\n deep: true\n }\n },\n methods: {\n handleFilterChange(type) {\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type,\n filters: {\n ...this.localFilters\n }\n });\n },\n clearFilters() {\n this.localFilters = {\n accessStatus: [],\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.$emit('update:filters', {\n ...this.localFilters\n });\n this.$emit('change', {\n type: 'clear',\n filters: {\n ...this.localFilters\n }\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./FilterDropdown.vue?vue&type=template&id=e6a38b20&scoped=true\"\nimport script from \"./FilterDropdown.vue?vue&type=script&lang=js\"\nexport * from \"./FilterDropdown.vue?vue&type=script&lang=js\"\n\nimport \"./FilterDropdown.vue?vue&type=style&index=0&id=e6a38b20&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-e6a38b20\"]])\n\nexport default __exports__","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport { resolveComponent as _resolveComponent, createVNode as _createVNode, withKeys as _withKeys, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"search-area\"\n};\nconst _hoisted_4 = {\n class: \"search-card\"\n};\nconst _hoisted_5 = {\n class: \"actions\"\n};\nconst _hoisted_6 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_7 = {\n class: \"el-dropdown-link\"\n};\nconst _hoisted_8 = {\n class: \"breadcrumb-container\"\n};\nconst _hoisted_9 = {\n class: \"breadcrumb-view-toggle\",\n role: \"group\"\n};\nconst _hoisted_10 = [\"title\", \"aria-pressed\"];\nconst _hoisted_11 = [\"title\", \"aria-pressed\"];\nconst _hoisted_12 = {\n class: \"mobile-directory-path\"\n};\nconst _hoisted_13 = {\n class: \"breadcrumb desktop-only\"\n};\nconst _hoisted_14 = [\"title\"];\nconst _hoisted_15 = {\n key: 1,\n class: \"empty-state\"\n};\nconst _hoisted_16 = {\n class: \"empty-text\"\n};\nconst _hoisted_17 = {\n class: \"empty-hint\"\n};\nconst _hoisted_18 = {\n class: \"list-header\"\n};\nconst _hoisted_19 = {\n class: \"list-col list-col-checkbox\"\n};\nconst _hoisted_20 = {\n class: \"list-col list-col-preview\"\n};\nconst _hoisted_21 = {\n class: \"list-col list-col-name\"\n};\nconst _hoisted_22 = {\n class: \"list-col list-col-tags\"\n};\nconst _hoisted_23 = {\n class: \"list-col list-col-channel\"\n};\nconst _hoisted_24 = {\n class: \"list-col list-col-channel-name\"\n};\nconst _hoisted_25 = {\n class: \"list-col list-col-address\"\n};\nconst _hoisted_26 = {\n class: \"list-col list-col-size\"\n};\nconst _hoisted_27 = {\n class: \"list-col list-col-date\"\n};\nconst _hoisted_28 = {\n class: \"list-col list-col-actions\"\n};\nconst _hoisted_29 = {\n key: 1,\n class: \"empty-state list-empty\"\n};\nconst _hoisted_30 = {\n class: \"empty-text\"\n};\nconst _hoisted_31 = {\n class: \"empty-hint\"\n};\nconst _hoisted_32 = {\n class: \"pagination-container\"\n};\nconst _hoisted_33 = {\n class: \"pagination-center\"\n};\nconst _hoisted_34 = {\n class: \"pagination-right\"\n};\nconst _hoisted_35 = {\n class: \"page-total\"\n};\nconst _hoisted_36 = {\n class: \"page-jump\"\n};\nconst _hoisted_37 = {\n class: \"dialog-section\"\n};\nconst _hoisted_38 = {\n class: \"section-header\"\n};\nconst _hoisted_39 = {\n class: \"section-title\"\n};\nconst _hoisted_40 = {\n class: \"section-content\"\n};\nconst _hoisted_41 = {\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-title\"\n};\nconst _hoisted_44 = {\n class: \"section-content\"\n};\nconst _hoisted_45 = {\n class: \"setting-item\"\n};\nconst _hoisted_46 = {\n class: \"setting-label\"\n};\nconst _hoisted_47 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_48 = {\n class: \"setting-label\"\n};\nconst _hoisted_49 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_FilterDropdown = _resolveComponent(\"FilterDropdown\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_DashboardCheckbox = _resolveComponent(\"DashboardCheckbox\");\n const _component_el_breadcrumb_item = _resolveComponent(\"el-breadcrumb-item\");\n const _component_el_breadcrumb = _resolveComponent(\"el-breadcrumb\");\n const _component_SkeletonLoader = _resolveComponent(\"SkeletonLoader\");\n const _component_FolderCard = _resolveComponent(\"FolderCard\");\n const _component_FileCard = _resolveComponent(\"FileCard\");\n const _component_FileListItem = _resolveComponent(\"FileListItem\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_main = _resolveComponent(\"el-main\");\n const _component_el_container = _resolveComponent(\"el-container\");\n const _component_BatchActionBar = _resolveComponent(\"BatchActionBar\");\n const _component_FileDetailDialog = _resolveComponent(\"FileDetailDialog\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_TagManagementDialog = _resolveComponent(\"TagManagementDialog\");\n const _component_BatchTagDialog = _resolveComponent(\"BatchTagDialog\");\n const _component_MobileActionSheet = _resolveComponent(\"MobileActionSheet\");\n const _component_MobileDirectoryDrawer = _resolveComponent(\"MobileDirectoryDrawer\");\n const _component_MoveFileDialog = _resolveComponent(\"MoveFileDialog\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_container, null, {\n default: _withCtx(() => [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"dashboard\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_input, {\n modelValue: $data.tempSearch,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.tempSearch = $event),\n size: \"small\",\n placeholder: _ctx.$t('dashboard.searchPlaceholder'),\n onKeyup: _withKeys($options.handleSearch, [\"enter\"])\n }, {\n suffix: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"search\",\n class: \"search-icon\",\n onClick: $options.handleSearch\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"modelValue\", \"placeholder\", \"onKeyup\"])]), _createVNode(_component_FilterDropdown, {\n filters: $data.filters,\n \"onUpdate:filters\": _cache[1] || (_cache[1] = $event => $data.filters = $event),\n channelNameOptions: $data.channelNameOptions,\n onChange: $options.handleFilterChange\n }, null, 8, [\"filters\", \"channelNameOptions\", \"onChange\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_dropdown, {\n onCommand: $options.sort,\n \"hide-on-click\": false\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"dateDesc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByDateDesc')), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"nameAsc\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.sortByNameAsc')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: $options.sortIcon,\n class: \"header-icon\"\n }, null, 8, [\"icon\"])])]),\n _: 1\n }, 8, [\"onCommand\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.linkFormat'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"header-icon\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showUrlDialog = true)\n })])]),\n _: 1\n }, 8, [\"disabled\", \"content\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('dashboard.logout'),\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\", \"content\"])])])]),\n _: 1\n }), _createVNode(_component_el_main, {\n class: _normalizeClass([\"main-container\", {\n 'has-batch-toolbar': $data.selectedFiles.length > 0\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.selectPage,\n indeterminate: $options.selectedPageFiles && !$options.selectPage,\n variant: \"breadcrumb\",\n onClick: $options.handleSelectPage\n }, null, 8, [\"checked\", \"indeterminate\", \"onClick\"]), _createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'card'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.cardView'),\n \"aria-pressed\": $data.viewMode === 'card',\n onClick: _cache[3] || (_cache[3] = $event => $options.setViewMode('card'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"th-large\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_10), _createElementVNode(\"button\", {\n class: _normalizeClass([\"breadcrumb-view-button\", {\n 'is-active': $data.viewMode === 'list'\n }]),\n type: \"button\",\n title: _ctx.$t('dashboard.listView'),\n \"aria-pressed\": $data.viewMode === 'list',\n onClick: _cache[4] || (_cache[4] = $event => $options.setViewMode('list'))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"list\",\n class: \"breadcrumb-view-icon\"\n })], 10, _hoisted_11)]), _createElementVNode(\"div\", {\n class: \"mobile-directory-trigger\",\n onClick: _cache[5] || (_cache[5] = $event => $data.showMobileDirectoryDrawer = true)\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"mobile-directory-icon\"\n }), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.currentPath && $data.currentPath.split('/').filter(Boolean).length > 0 ? $data.currentPath.split('/').filter(Boolean).pop() : _ctx.$t('dashboard.rootDirectory')), 1), _createVNode(_component_font_awesome_icon, {\n icon: \"chevron-down\",\n class: \"mobile-directory-arrow\"\n })]), _createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_breadcrumb, {\n separator: \"/\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_breadcrumb_item, {\n onClick: _cache[6] || (_cache[6] = $event => $options.navigateToFolder(''))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"breadcrumb-home-icon\"\n })]),\n _: 1\n }), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.currentPath.split('/').filter(Boolean), (folder, index) => {\n return _openBlock(), _createBlock(_component_el_breadcrumb_item, {\n key: index,\n onClick: $event => $options.navigateToFolder($data.currentPath.split('/').filter(Boolean).slice(0, index + 1).join('/'))\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(folder), 1)]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))]),\n _: 1\n })]), _createElementVNode(\"span\", {\n class: \"stats-badge\",\n title: _ctx.$t('dashboard.totalFiles', {\n count: _ctx.$data.Number\n })\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"stats-badge-icon\"\n }), _createTextVNode(\" \" + _toDisplayString($data.Number), 1)], 8, _hoisted_14)]), $data.viewMode === 'card' ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"content\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"cardContainerRef\",\n onTouchstartPassive: _cache[7] || (_cache[7] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[8] || (_cache[8] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[9] || (_cache[9] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [$data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"card\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_16, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_17, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createElementBlock(_Fragment, {\n key: index\n }, [$options.isFolder(item) ? (_openBlock(), _createBlock(_component_FolderCard, {\n key: 0,\n name: item.name,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n showActions: !$data.isSearchMode,\n disableTooltip: $options.disableTooltip,\n onEnter: $event => $options.enterFolder(item.name),\n onCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onTouchstart: $event => $options.handleFolderTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"name\", \"selected\", \"onUpdate:selected\", \"showActions\", \"disableTooltip\", \"onEnter\", \"onCopy\", \"onMove\", \"onDelete\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"])) : (_openBlock(), _createBlock(_component_FileCard, {\n key: 1,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n previewSrcList: item.previewSrcList,\n disableTooltip: $options.disableTooltip,\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"previewSrcList\", \"disableTooltip\", \"onDetail\", \"onCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]))], 64);\n }), 128))], 34)) : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"list-view\", {\n 'is-drag-selecting': $setup.isDragging\n }]),\n ref: \"listContainerRef\",\n onTouchstartPassive: _cache[11] || (_cache[11] = (...args) => $options.handlePageSwipeStart && $options.handlePageSwipeStart(...args)),\n onTouchendPassive: _cache[12] || (_cache[12] = (...args) => $options.handlePageSwipeEnd && $options.handlePageSwipeEnd(...args)),\n onTouchcancelPassive: _cache[13] || (_cache[13] = (...args) => $options.resetPageSwipe && $options.resetPageSwipe(...args))\n }, [_createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_DashboardCheckbox, {\n checked: $options.isSelectAll,\n indeterminate: $options.isIndeterminate,\n onClick: _cache[10] || (_cache[10] = $event => $options.handleSelectAllPage(!$options.isSelectAll))\n }, null, 8, [\"checked\", \"indeterminate\"])]), _createElementVNode(\"div\", _hoisted_20, _toDisplayString(_ctx.$t('dashboard.preview')), 1), _createElementVNode(\"div\", _hoisted_21, _toDisplayString(_ctx.$t('dashboard.fileName')), 1), _createElementVNode(\"div\", _hoisted_22, _toDisplayString(_ctx.$t('dashboard.tags')), 1), _createElementVNode(\"div\", _hoisted_23, _toDisplayString(_ctx.$t('dashboard.channelType')), 1), _createElementVNode(\"div\", _hoisted_24, _toDisplayString(_ctx.$t('dashboard.channelNameCol')), 1), _createElementVNode(\"div\", _hoisted_25, _toDisplayString(_ctx.$t('dashboard.uploadAddress')), 1), _createElementVNode(\"div\", _hoisted_26, _toDisplayString(_ctx.$t('dashboard.fileSize')), 1), _createElementVNode(\"div\", _hoisted_27, _toDisplayString(_ctx.$t('dashboard.uploadTime')), 1), _createElementVNode(\"div\", _hoisted_28, _toDisplayString(_ctx.$t('dashboard.actions')), 1)]), $data.loading ? (_openBlock(), _createBlock(_component_SkeletonLoader, {\n key: 0,\n type: \"list\",\n count: $data.pageSize\n }, null, 8, [\"count\"])) : $options.paginatedTableData.length === 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\",\n class: \"empty-icon\"\n }), _createElementVNode(\"p\", _hoisted_30, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.noMatchingFiles') : _ctx.$t('dashboard.currentDirEmpty')), 1), _createElementVNode(\"p\", _hoisted_31, _toDisplayString($options.hasSearchOrFilter ? _ctx.$t('dashboard.adjustSearchHint') : _ctx.$t('dashboard.uploadHint')), 1)])) : (_openBlock(true), _createElementBlock(_Fragment, {\n key: 2\n }, _renderList($options.paginatedTableData, (item, index) => {\n return _openBlock(), _createBlock(_component_FileListItem, {\n key: index,\n item: item,\n selected: item.selected,\n \"onUpdate:selected\": $event => item.selected = $event,\n fileLink: $options.getFileLink(item.name),\n onEnter: $event => $options.enterFolder(item.name),\n onDetail: $event => $options.openDetailDialog(index, item.name),\n onCopy: $event => $options.handleCopy(index, item.name),\n onFolderCopy: $event => $options.handleFolderCopy(item.name),\n onMove: $event => $options.handleMove(index, item.name),\n onDelete: $event => $options.handleDelete(index, item.name),\n onDownload: $event => $options.handleDownload(item.name),\n onTouchstart: $event => $options.isFolder(item) ? $options.handleFolderTouchStart(item, index) : $options.handleTouchStart(item, index),\n onTouchend: $options.handleTouchEnd,\n onTouchmove: $options.handleTouchEnd\n }, null, 8, [\"item\", \"selected\", \"onUpdate:selected\", \"fileLink\", \"onEnter\", \"onDetail\", \"onCopy\", \"onFolderCopy\", \"onMove\", \"onDelete\", \"onDownload\", \"onTouchstart\", \"onTouchend\", \"onTouchmove\"]);\n }), 128))], 34)), $setup.isDragging ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: \"drag-select-overlay\",\n style: _normalizeStyle({\n position: 'fixed',\n left: $setup.selectionRect.left + 'px',\n top: $setup.selectionRect.top + 'px',\n width: $setup.selectionRect.width + 'px',\n height: $setup.selectionRect.height + 'px'\n })\n }, null, 4)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_32, [_createElementVNode(\"div\", _hoisted_33, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $options.filteredTableData.length,\n \"page-size\": $data.pageSize,\n \"current-page\": $data.currentPage,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"page-size\", \"current-page\", \"pager-count\", \"onCurrentChange\"]), _createVNode(_component_el_button, {\n type: \"primary\",\n onClick: $options.refreshFileList,\n class: \"refresh-btn\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sync\",\n class: _normalizeClass({\n 'fa-spin': $data.refreshLoading\n })\n }, null, 8, [\"class\"])]),\n _: 1\n }, 8, [\"onClick\"]), $data.currentPage === Math.ceil($options.filteredTableData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('dashboard.loadMore')), 1)]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_34, [_createElementVNode(\"span\", _hoisted_35, _toDisplayString(_ctx.$t('dashboard.totalPages', {\n count: $options.realTotalPages\n })), 1), _createElementVNode(\"div\", _hoisted_36, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('dashboard.jumpTo')), 1), _createVNode(_component_el_input, {\n modelValue: $data.jumpPage,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $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[31] || (_cache[31] = [_createTextVNode(\"GO\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])])])]),\n _: 1\n }, 8, [\"class\"])]),\n _: 1\n }), _createVNode(_component_BatchActionBar, {\n \"selected-count\": $data.selectedFiles.length,\n onAction: $options.handleBatchAction,\n onClear: $options.clearSelection\n }, null, 8, [\"selected-count\", \"onAction\", \"onClear\"]), _createVNode(_component_FileDetailDialog, {\n modelValue: $data.showdetailDialog,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.showdetailDialog = $event),\n file: $data.detailFile,\n fileLink: $options.getFileLink($data.detailFile?.name),\n urls: $options.allUrl,\n onDownload: _cache[16] || (_cache[16] = $event => $options.handleDownload($data.detailFile?.name)),\n onTagManagement: _cache[17] || (_cache[17] = $event => $options.handleTagManagement($data.detailFile?.name)),\n onBlock: _cache[18] || (_cache[18] = $event => $options.handleBlock($data.detailFile?.name)),\n onWhite: _cache[19] || (_cache[19] = $event => $options.handleWhite($data.detailFile?.name)),\n onDelete: _cache[20] || (_cache[20] = $event => $options.handleDetailDelete($data.detailFile?.name)),\n onMetadataUpdated: $options.handleMetadataUpdated,\n onFileRenamed: $options.handleFileRenamed\n }, null, 8, [\"modelValue\", \"file\", \"fileLink\", \"urls\", \"onMetadataUpdated\", \"onFileRenamed\"]), _createVNode(_component_el_dialog, {\n title: _ctx.$t('dashboard.linkFormat'),\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[25] || (_cache[25] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_37, [_createElementVNode(\"div\", _hoisted_38, [_createElementVNode(\"span\", _hoisted_39, _toDisplayString(_ctx.$t('settings.defaultCopyLink')), 1)]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_radio_group, {\n modelValue: $data.defaultUrlFormat,\n \"onUpdate:modelValue\": _cache[21] || (_cache[21] = $event => $data.defaultUrlFormat = $event),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"originUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.rawLink')), 1)]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"mdUrl\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[32] || (_cache[32] = _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[33] || (_cache[33] = _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[34] || (_cache[34] = _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[35] || (_cache[35] = _createElementVNode(\"span\", null, \"TG File ID\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3Location\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"radio-icon\"\n }), _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('settings.s3Link')), 1)]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_createElementVNode(\"span\", _hoisted_43, _toDisplayString(_ctx.$t('settings.customLink')), 1), _createVNode(_component_el_tooltip, {\n content: _ctx.$t('settings.customLinkTooltip'),\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n }, 8, [\"content\"])]), _createElementVNode(\"div\", _hoisted_44, [_createElementVNode(\"div\", _hoisted_45, [_createElementVNode(\"span\", _hoisted_46, _toDisplayString(_ctx.$t('settings.enableCustom')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_47, [_createElementVNode(\"span\", _hoisted_48, _toDisplayString(_ctx.$t('settings.customPrefix')), 1), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[23] || (_cache[23] = $event => $data.customUrlPrefix = $event),\n placeholder: _ctx.$t('settings.customPrefixPlaceholder'),\n class: \"setting-input\"\n }, null, 8, [\"modelValue\", \"placeholder\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_49, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[24] || (_cache[24] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString(_ctx.$t('settings.confirm')), 1)]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"title\", \"modelValue\", \"width\"]), _createVNode(_component_TagManagementDialog, {\n modelValue: $data.showTagDialog,\n \"onUpdate:modelValue\": _cache[26] || (_cache[26] = $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[27] || (_cache[27] = $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[28] || (_cache[28] = $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[29] || (_cache[29] = $event => $data.showMobileDirectoryDrawer = $event),\n currentPath: $data.currentPath,\n onNavigate: $options.navigateToFolder,\n onGoBack: $options.handleGoBack\n }, null, 8, [\"modelValue\", \"currentPath\", \"onNavigate\", \"onGoBack\"]), _createVNode(_component_MoveFileDialog, {\n modelValue: $data.showMoveDialog,\n \"onUpdate:modelValue\": _cache[30] || (_cache[30] = $event => $data.showMoveDialog = $event),\n \"current-directory\": $data.currentPath,\n \"is-batch-move\": $data.isBatchMove,\n \"initial-path\": $data.moveTargetPath,\n onConfirm: $options.confirmMove\n }, null, 8, [\"modelValue\", \"current-directory\", \"is-batch-move\", \"initial-path\", \"onConfirm\"])]);\n}","// 文件管理器工具类\r\nimport fetchWithAuth from '@/utils/fetchWithAuth';\r\nimport { ElMessage } from 'element-plus';\r\nimport i18n from '@/locales';\r\n\r\nclass FileManager {\r\n constructor() {\r\n this.FILE_LIST_PATH = 'data/fileList.json';\r\n this.fileListCache = null;\r\n this.storageWarningShown = false;\r\n }\r\n\r\n // 从本地存储读取文件列表\r\n getLocalFileList() {\r\n const fileList = this.getMutableFileList();\r\n return {\r\n ...fileList,\r\n files: [...(fileList.files || [])],\r\n directories: [...(fileList.directories || [])],\r\n };\r\n }\r\n\r\n getMutableFileList() {\r\n if (this.fileListCache) {\r\n return this.fileListCache;\r\n }\r\n\r\n try {\r\n const fileList = localStorage.getItem(this.FILE_LIST_PATH);\r\n this.fileListCache = fileList ? JSON.parse(fileList) : this.createEmptyFileList();\r\n return this.fileListCache;\r\n } catch (error) {\r\n console.error('Error reading local file list:', error);\r\n this.fileListCache = this.createEmptyFileList();\r\n return this.fileListCache;\r\n }\r\n }\r\n\r\n // 更新内存缓存,并尽量持久化到 localStorage\r\n updateFileListCache(fileList) {\r\n this.fileListCache = fileList || this.createEmptyFileList();\r\n const persisted = this.persistFileListCache();\r\n\r\n return {\r\n cacheUpdated: true,\r\n persisted,\r\n };\r\n }\r\n\r\n persistFileListCache() {\r\n try {\r\n localStorage.setItem(this.FILE_LIST_PATH, JSON.stringify(this.fileListCache));\r\n return true;\r\n } catch (error) {\r\n this.handleStoragePersistError(error);\r\n return false;\r\n }\r\n }\r\n\r\n createEmptyFileList() {\r\n return { files: [], directories: [] };\r\n }\r\n\r\n handleStoragePersistError(error) {\r\n console.warn('File list is kept in memory because localStorage persistence failed:', error);\r\n\r\n try {\r\n localStorage.removeItem(this.FILE_LIST_PATH);\r\n } catch (removeError) {\r\n console.warn('Failed to remove stale file list cache:', removeError);\r\n }\r\n\r\n if (!this.storageWarningShown) {\r\n this.storageWarningShown = true;\r\n ElMessage.warning(i18n.global.t('dashboard.fileListMemoryCacheWarning'));\r\n }\r\n }\r\n\r\n // 添加新文件到列表\r\n addFile(newFile) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n fileList.files.push(newFile);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error adding file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 添加新文件夹\r\n addFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n if (!fileList.directories.includes(folderName)) {\r\n fileList.directories.push(folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n }\r\n return false; // 文件夹已存在\r\n } catch (error) {\r\n console.error('Error adding folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 移动文件或文件夹\r\n moveFile(oldPath, newPath, isFolder = false, currentPath = '') {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n \r\n if (isFolder) {\r\n // 更新目录列表\r\n const oldFolderIndex = fileList.directories.indexOf(oldPath);\r\n if (oldFolderIndex !== -1) {\r\n fileList.directories.splice(oldFolderIndex, 1);\r\n }\r\n\r\n } else {\r\n // 移动单个文件\r\n const fileIndex = fileList.files.findIndex(file => file.name === oldPath);\r\n if (fileIndex !== -1) {\r\n // 从旧位置移除\r\n fileList.files.splice(fileIndex, 1);\r\n }\r\n\r\n }\r\n\r\n // 如果新路径包含当前目录的直接子目录,则添加直接子目录\r\n if (newPath.startsWith(currentPath)) {\r\n const pathArray = newPath.substring(currentPath.length).split('/');\r\n if (pathArray.length > 1) {\r\n const newFolder = currentPath + pathArray[0];\r\n if (!fileList.directories.includes(newFolder)) {\r\n fileList.directories.push(newFolder);\r\n }\r\n }\r\n }\r\n\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error moving file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件\r\n removeFile(fileName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => file.name !== fileName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing file:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 从列表中删除文件夹(同时删除该文件夹下的所有文件)\r\n removeFolder(folderName) {\r\n try {\r\n let fileList = this.getMutableFileList();\r\n fileList.files = fileList.files.filter(file => !file.name.startsWith(folderName + '/'));\r\n fileList.directories = fileList.directories.filter(dir => dir !== folderName);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error removing folder:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 获取指定目录下的文件和子目录\r\n getFilesInFolder(folderName) {\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const files = fileList.files.filter(file => file.name.startsWith(folderName + '/'));\r\n const subdirectories = fileList.directories.filter(dir => dir.startsWith(folderName + '/'));\r\n return { files, directories: subdirectories };\r\n } catch (error) {\r\n console.error('Error getting files in folder:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n\r\n // 构建筛选参数URL\r\n buildFilterParams(filters) {\r\n let params = '';\r\n // 访问状态筛选(综合判断)\r\n if (filters.accessStatus && filters.accessStatus.length > 0) {\r\n params += `&accessStatus=${encodeURIComponent(filters.accessStatus.join(','))}`;\r\n }\r\n // 黑白名单筛选(直接使用 ListType 字段)\r\n if (filters.listType && filters.listType.length > 0) {\r\n params += `&listType=${encodeURIComponent(filters.listType.join(','))}`;\r\n }\r\n if (filters.label && filters.label.length > 0) {\r\n params += `&label=${encodeURIComponent(filters.label.join(','))}`;\r\n }\r\n if (filters.fileType && filters.fileType.length > 0) {\r\n params += `&fileType=${encodeURIComponent(filters.fileType.join(','))}`;\r\n }\r\n if (filters.channel && filters.channel.length > 0) {\r\n params += `&channel=${encodeURIComponent(filters.channel.join(','))}`;\r\n }\r\n if (filters.channelName && filters.channelName.length > 0) {\r\n params += `&channelName=${encodeURIComponent(filters.channelName.join(','))}`;\r\n }\r\n return params;\r\n }\r\n\r\n // 更新文件列表\r\n async refreshFileList(dir, search = '', includeTags = '', excludeTags = '', filters = {}) {\r\n search = search.trim();\r\n try {\r\n let url = `/api/manage/list?count=60&dir=${dir}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n \r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n const newFileList = await response.json();\r\n if (!newFileList.isIndexedResponse) {\r\n ElMessage.warning(i18n.global.t('dashboard.indexingWarning'));\r\n }\r\n // 保存包含新字段的完整数据\r\n return this.updateFileListCache(newFileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error refreshing file list:', error);\r\n return false;\r\n }\r\n }\r\n\r\n // 读取更多数据\r\n async loadMoreFiles(dir, search = '', includeTags = '', excludeTags = '', count = 60, filters = {}) {\r\n search = search.trim();\r\n try {\r\n const fileList = this.getMutableFileList();\r\n const start = fileList.files.length;\r\n\r\n let url = `/api/manage/list?dir=${dir}&start=${start}&count=${count}&search=${encodeURIComponent(search)}`;\r\n if (includeTags) {\r\n url += `&includeTags=${encodeURIComponent(includeTags)}`;\r\n }\r\n if (excludeTags) {\r\n url += `&excludeTags=${encodeURIComponent(excludeTags)}`;\r\n }\r\n // 添加筛选参数(支持多选)\r\n url += this.buildFilterParams(filters);\r\n\r\n const response = await fetchWithAuth(url, {\r\n method: 'GET',\r\n });\r\n \r\n const moreFiles = await response.json();\r\n fileList.files.push(...moreFiles.files);\r\n return this.updateFileListCache(fileList).cacheUpdated;\r\n } catch (error) {\r\n console.error('Error loading more files:', error);\r\n return { files: [], directories: [] };\r\n }\r\n }\r\n}\r\n\r\nexport const fileManager = new FileManager();\r\n","/**\r\n * 矩形工具函数\r\n * 用于框选(rubber-band selection)功能中的矩形计算和相交检测\r\n */\r\n\r\n/**\r\n * 判断两个矩形是否相交\r\n * @param {Object} rectA - { left, top, right, bottom }\r\n * @param {Object} rectB - { left, top, right, bottom }\r\n * @returns {boolean} 是否存在重叠区域\r\n */\r\nexport function rectIntersects(rectA, rectB) {\r\n return !(\r\n rectA.right <= rectB.left ||\r\n rectA.left >= rectB.right ||\r\n rectA.bottom <= rectB.top ||\r\n rectA.top >= rectB.bottom\r\n );\r\n}\r\n\r\n/**\r\n * 根据起始点和当前点计算选区矩形\r\n * @param {Object} start - { x, y } 起始鼠标坐标\r\n * @param {Object} current - { x, y } 当前鼠标坐标\r\n * @returns {Object} { left, top, width, height, right, bottom }\r\n */\r\nexport function calcSelectionRect(start, current) {\r\n const left = Math.min(start.x, current.x);\r\n const top = Math.min(start.y, current.y);\r\n const width = Math.abs(current.x - start.x);\r\n const height = Math.abs(current.y - start.y);\r\n return { left, top, width, height, right: left + width, bottom: top + height };\r\n}\r\n","import { ref, watch, onMounted, onBeforeUnmount, toValue } from 'vue';\r\nimport { rectIntersects, calcSelectionRect } from './rectIntersects.js';\r\n\r\n/**\r\n * Vue 3 Composable:框选(rubber-band selection)核心逻辑,支持多视图模式\r\n *\r\n * @param {Object} options\r\n * @param {Object} options.modes - Per-view-mode configuration\r\n * @param {Object} options.modes.card - Card view config\r\n * @param {import('vue').Ref} options.modes.card.containerRef\r\n * @param {string} options.modes.card.itemSelector - e.g. '.img-card'\r\n * @param {Object} options.modes.list - List view config\r\n * @param {import('vue').Ref} options.modes.list.containerRef\r\n * @param {string} options.modes.list.itemSelector - e.g. '.list-item'\r\n * @param {string} [options.mainSelector='.main-container'] - 主内容区域的 CSS 选择器,框选只能从该区域内开始\r\n * @param {import('vue').Ref} options.viewMode - 当前视图模式\r\n * @param {import('vue').Ref} options.items - 当前页的数据项(paginatedTableData)\r\n * @returns {{ isDragging: import('vue').Ref, selectionRect: import('vue').Ref }}\r\n */\r\nexport function useDragSelect(options) {\r\n const {\r\n modes,\r\n mainSelector = '.main-container',\r\n viewMode,\r\n items,\r\n } = options;\r\n\r\n // --- Reactive state ---\r\n const isDragging = ref(false);\r\n const selectionRect = ref({ left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 });\r\n\r\n // --- Internal (non-reactive) state ---\r\n let startPoint = null; // { x, y } viewport coordinates at mousedown\r\n let preSelectSnapshot = []; // boolean[] snapshot of items[i].selected before drag\r\n let isAppendMode = false; // whether Shift/Ctrl/Cmd was held at mousedown\r\n\r\n // --- Enable/disable state ---\r\n const MOBILE_BREAKPOINT = 768; // px – at or below this width, drag-select is disabled\r\n let listenerAttached = false; // tracks whether the container mousedown listener is active\r\n\r\n // --- Auto-scroll state ---\r\n const EDGE_THRESHOLD = 50; // px from viewport edge to trigger auto-scroll\r\n const SCROLL_SPEED = 10; // px per frame to scroll\r\n let autoScrollTimer = null; // requestAnimationFrame ID for auto-scroll\r\n\r\n // --- Text selection prevention state ---\r\n let savedUserSelect = ''; // saved document.body.style.userSelect before drag\r\n\r\n // ------------------------------------------------------------------\r\n // Mode resolution helper\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Returns the configuration for the current viewMode.\r\n * @returns {{ containerRef: import('vue').Ref, itemSelector: string } | undefined}\r\n */\r\n function getActiveConfig() {\r\n const mode = toValue(viewMode);\r\n return modes[mode] || undefined;\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Enable / disable helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Determine whether drag-select should be enabled.\r\n * Returns true when viewMode is 'card' or 'list' AND window width > 768px.\r\n */\r\n function shouldEnable() {\r\n const mode = toValue(viewMode);\r\n return (mode === 'card' || mode === 'list') && window.innerWidth > MOBILE_BREAKPOINT;\r\n }\r\n\r\n /**\r\n * Conditionally attach or detach the container listener based on shouldEnable().\r\n * Also cancels any active drag when detaching.\r\n */\r\n function syncListenerState() {\r\n if (shouldEnable()) {\r\n if (!listenerAttached) {\r\n attachContainerListener();\r\n }\r\n } else {\r\n if (listenerAttached) {\r\n cancelDrag();\r\n detachContainerListener();\r\n }\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * 判断 mousedown 目标是否为可启动框选的空白区域。\r\n * 必须在主内容区域内,且不在卡片、交互元素上。\r\n */\r\n function isBlankArea(event) {\r\n const target = event.target;\r\n // 必须在主内容区域(el-main)内\r\n const mainArea = target.closest(mainSelector);\r\n if (!mainArea) return false;\r\n // 排除当前模式的可选元素\r\n const config = getActiveConfig();\r\n if (config) {\r\n const itemEl = target.closest(config.itemSelector);\r\n if (itemEl) {\r\n const container = toValue(config.containerRef);\r\n if (container && container.contains(itemEl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n // 排除交互元素(按钮、输入框、链接、下拉菜单、分页等)\r\n const interactive = target.closest('button, a, input, .el-input, .el-dropdown, .el-checkbox, .el-breadcrumb, .el-pagination, .el-pager, .header-content, .breadcrumb-container');\r\n if (interactive) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Determine whether a modifier key for append-select is pressed.\r\n */\r\n function hasAppendModifier(event) {\r\n return event.shiftKey || event.ctrlKey || event.metaKey;\r\n }\r\n\r\n /**\r\n * Save a snapshot of the current selected state for all items.\r\n */\r\n function saveSnapshot() {\r\n const currentItems = toValue(items);\r\n preSelectSnapshot = currentItems.map((item) => !!item.selected);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Auto-scroll helpers\r\n // ------------------------------------------------------------------\r\n\r\n /** The last known clientY during a drag – updated by onMouseMove. */\r\n let lastClientY = 0;\r\n\r\n /**\r\n * Start the auto-scroll loop. On each animation frame we check whether the\r\n * mouse is within EDGE_THRESHOLD of the top or bottom of the viewport and\r\n * scroll accordingly. The selection rectangle and card hit-testing are also\r\n * updated after each scroll step so the visual feedback stays in sync.\r\n */\r\n function startAutoScroll() {\r\n if (autoScrollTimer !== null) return; // already running\r\n\r\n function scrollStep() {\r\n const viewportHeight = window.innerHeight;\r\n let scrollDelta = 0;\r\n\r\n if (lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n // Near bottom edge → scroll down\r\n scrollDelta = SCROLL_SPEED;\r\n } else if (lastClientY <= EDGE_THRESHOLD) {\r\n // Near top edge → scroll up\r\n scrollDelta = -SCROLL_SPEED;\r\n }\r\n\r\n if (scrollDelta !== 0) {\r\n window.scrollBy(0, scrollDelta);\r\n\r\n // After scrolling, the viewport-relative positions of cards change,\r\n // but the mouse hasn't moved. We need to adjust the start point so\r\n // the selection rectangle accounts for the scroll offset, then\r\n // re-run hit-testing.\r\n if (startPoint) {\r\n startPoint.y -= scrollDelta;\r\n selectionRect.value = calcSelectionRect(startPoint, { x: selectionRect.value.right >= startPoint.x ? selectionRect.value.right : selectionRect.value.left, y: lastClientY });\r\n updateSelection();\r\n }\r\n }\r\n\r\n // Continue the loop\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n autoScrollTimer = requestAnimationFrame(scrollStep);\r\n }\r\n\r\n /**\r\n * Stop the auto-scroll loop and clean up the timer.\r\n */\r\n function stopAutoScroll() {\r\n if (autoScrollTimer !== null) {\r\n cancelAnimationFrame(autoScrollTimer);\r\n autoScrollTimer = null;\r\n }\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Text selection prevention helpers\r\n // ------------------------------------------------------------------\r\n\r\n /**\r\n * Disable text selection on the document body during drag.\r\n */\r\n function disableTextSelection() {\r\n savedUserSelect = document.body.style.userSelect;\r\n document.body.style.userSelect = 'none';\r\n }\r\n\r\n /**\r\n * Restore the original text selection behavior on the document body.\r\n */\r\n function restoreTextSelection() {\r\n document.body.style.userSelect = savedUserSelect;\r\n }\r\n\r\n /**\r\n * Update the selected state of every item based on the current selection rectangle.\r\n */\r\n function updateSelection() {\r\n const config = getActiveConfig();\r\n if (!config) return;\r\n\r\n const container = toValue(config.containerRef);\r\n if (!container) return;\r\n\r\n const currentItems = toValue(items);\r\n const rect = selectionRect.value;\r\n\r\n // Build the selection rect in {left, top, right, bottom} format for intersection test\r\n const selRect = {\r\n left: rect.left,\r\n top: rect.top,\r\n right: rect.right,\r\n bottom: rect.bottom,\r\n };\r\n\r\n // Query all item DOM elements inside the container using the active mode's selector\r\n const itemElements = container.querySelectorAll(config.itemSelector);\r\n\r\n // Iterate over items and corresponding DOM elements\r\n currentItems.forEach((item, index) => {\r\n const itemEl = itemElements[index];\r\n if (!itemEl) return;\r\n\r\n const itemRect = itemEl.getBoundingClientRect();\r\n const itemBounds = {\r\n left: itemRect.left,\r\n top: itemRect.top,\r\n right: itemRect.right,\r\n bottom: itemRect.bottom,\r\n };\r\n\r\n const intersects = rectIntersects(selRect, itemBounds);\r\n\r\n if (isAppendMode) {\r\n // Append mode: keep original state, toggle on if intersects\r\n // If originally selected, stay selected regardless\r\n // If not originally selected, select if intersects\r\n if (preSelectSnapshot[index]) {\r\n item.selected = true;\r\n } else {\r\n item.selected = intersects;\r\n }\r\n } else {\r\n // Non-append mode: selected = intersects only\r\n item.selected = intersects;\r\n }\r\n });\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Mouse event handlers\r\n // ------------------------------------------------------------------\r\n\r\n function onMouseDown(event) {\r\n // 仅响应鼠标左键\r\n if (event.button !== 0) return;\r\n\r\n // 点击在卡片上时不启动框选\r\n if (!isBlankArea(event)) return;\r\n\r\n // Record start point (viewport coordinates)\r\n startPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Determine append mode from modifier keys at the moment of mousedown\r\n isAppendMode = hasAppendModifier(event);\r\n\r\n // 保存选中状态快照\r\n saveSnapshot();\r\n\r\n // 非追加模式下先清除所有选中\r\n if (!isAppendMode) {\r\n const currentItems = toValue(items);\r\n currentItems.forEach((item) => {\r\n item.selected = false;\r\n });\r\n }\r\n\r\n // Start dragging\r\n isDragging.value = true;\r\n selectionRect.value = calcSelectionRect(startPoint, startPoint);\r\n\r\n // 防止文本选中\r\n disableTextSelection();\r\n\r\n // Attach document-level listeners for move and up\r\n document.addEventListener('mousemove', onMouseMove);\r\n document.addEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n function onMouseMove(event) {\r\n if (!isDragging.value || !startPoint) return;\r\n\r\n const currentPoint = { x: event.clientX, y: event.clientY };\r\n\r\n // Track last clientY for auto-scroll\r\n lastClientY = event.clientY;\r\n\r\n // Update selection rectangle\r\n selectionRect.value = calcSelectionRect(startPoint, currentPoint);\r\n\r\n // Update card selection based on intersection\r\n updateSelection();\r\n\r\n // Start or continue auto-scroll if near viewport edges\r\n const viewportHeight = window.innerHeight;\r\n if (lastClientY <= EDGE_THRESHOLD || lastClientY >= viewportHeight - EDGE_THRESHOLD) {\r\n startAutoScroll();\r\n } else {\r\n stopAutoScroll();\r\n }\r\n }\r\n\r\n function onMouseUp(_event) {\r\n if (!isDragging.value) return;\r\n\r\n // 停止自动滚动\r\n stopAutoScroll();\r\n\r\n // 恢复文本选中\r\n restoreTextSelection();\r\n\r\n // End dragging\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n\r\n // Clean up document-level listeners\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n\r\n // ------------------------------------------------------------------\r\n // Lifecycle: attach / detach container listener\r\n // ------------------------------------------------------------------\r\n\r\n function attachContainerListener() {\r\n if (!listenerAttached) {\r\n document.addEventListener('mousedown', onMouseDown);\r\n listenerAttached = true;\r\n }\r\n }\r\n\r\n function detachContainerListener() {\r\n if (listenerAttached) {\r\n document.removeEventListener('mousedown', onMouseDown);\r\n listenerAttached = false;\r\n }\r\n }\r\n\r\n /**\r\n * Force-stop any in-progress drag (e.g. when viewMode changes).\r\n */\r\n function cancelDrag() {\r\n if (isDragging.value) {\r\n stopAutoScroll();\r\n restoreTextSelection();\r\n isDragging.value = false;\r\n selectionRect.value = { left: 0, top: 0, width: 0, height: 0, right: 0, bottom: 0 };\r\n startPoint = null;\r\n document.removeEventListener('mousemove', onMouseMove);\r\n document.removeEventListener('mouseup', onMouseUp);\r\n }\r\n }\r\n\r\n // 监听 viewMode 变化,启用/禁用框选\r\n // Always cancel any in-progress drag when viewMode changes (Requirement 2.3),\r\n // then re-evaluate whether listeners should be attached for the new mode.\r\n watch(\r\n () => toValue(viewMode),\r\n () => {\r\n cancelDrag();\r\n syncListenerState();\r\n }\r\n );\r\n\r\n // --- Window resize handler ---\r\n function onWindowResize() {\r\n syncListenerState();\r\n }\r\n\r\n onMounted(() => {\r\n // 仅在满足条件时启用\r\n if (shouldEnable()) {\r\n attachContainerListener();\r\n }\r\n // Always listen for resize to dynamically enable/disable\r\n window.addEventListener('resize', onWindowResize);\r\n });\r\n\r\n onBeforeUnmount(() => {\r\n cancelDrag();\r\n restoreTextSelection();\r\n stopAutoScroll();\r\n detachContainerListener();\r\n window.removeEventListener('resize', onWindowResize);\r\n });\r\n\r\n return {\r\n isDragging,\r\n selectionRect,\r\n };\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.every.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport \"core-js/modules/es.set.difference.v2.js\";\nimport \"core-js/modules/es.set.intersection.v2.js\";\nimport \"core-js/modules/es.set.is-disjoint-from.v2.js\";\nimport \"core-js/modules/es.set.is-subset-of.v2.js\";\nimport \"core-js/modules/es.set.is-superset-of.v2.js\";\nimport \"core-js/modules/es.set.symmetric-difference.v2.js\";\nimport \"core-js/modules/es.set.union.v2.js\";\nimport { mapGetters } from 'vuex';\nimport JSZip from 'jszip';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nimport TagManagementDialog from '@/components/dashboard/TagManagementDialog.vue';\nimport BatchTagDialog from '@/components/dashboard/BatchTagDialog.vue';\nimport SkeletonLoader from '@/components/dashboard/SkeletonLoader.vue';\nimport FileCard from '@/components/dashboard/FileCard.vue';\nimport FolderCard from '@/components/dashboard/FolderCard.vue';\nimport MoveFileDialog from '@/components/dashboard/MoveFileDialog.vue';\nimport FileListItem from '@/components/dashboard/FileListItem.vue';\nimport FileDetailDialog from '@/components/dashboard/FileDetailDialog.vue';\nimport BatchActionBar from '@/components/dashboard/BatchActionBar.vue';\nimport MobileActionSheet from '@/components/dashboard/MobileActionSheet.vue';\nimport MobileDirectoryDrawer from '@/components/dashboard/MobileDirectoryDrawer.vue';\nimport DashboardCheckbox from '@/components/dashboard/DashboardCheckbox.vue';\nimport FilterDropdown from '@/components/dashboard/FilterDropdown.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nimport { fileManager } from '@/utils/fileManager';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport { validateFolderPath } from '@/utils/pathValidator';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport { ref } from 'vue';\nimport { useDragSelect } from '@/utils/dashboard/useDragSelect.js';\nexport default {\n name: 'AdminDashBoard',\n mixins: [backgroundManager],\n data() {\n return {\n Number: 0,\n directFileCount: 0,\n // 当前目录直接子文件数量\n directFolderCount: 0,\n // 当前目录直接子文件夹数量\n showLogoutButton: false,\n tableData: [],\n tempSearch: '',\n search: '',\n searchKeywords: '',\n // Keywords only (without tag filters) for backend search\n searchIncludeTags: '',\n // 包含的标签,逗号分隔\n searchExcludeTags: '',\n // 排除的标签,逗号分隔\n isSearchMode: false,\n currentPage: 1,\n pageSize: 15,\n selectedFiles: [],\n sortOption: 'dateDesc',\n isUploading: false,\n showdetailDialog: false,\n detailFile: null,\n activeUrlTab: 'originUrl',\n defaultUrlFormat: 'originUrl',\n showUrlDialog: false,\n useCustomUrl: 'false',\n // 是否启用自定义链接\n customUrlPrefix: '',\n // 自定义链接前缀\n loading: false,\n // 加载状态\n currentPath: '',\n // 当前文件夹路径\n refreshLoading: false,\n showTagDialog: false,\n // 标签管理对话框\n showBatchTagDialog: false,\n // 批量标签管理对话框\n currentTagFile: '',\n // 当前标签管理的文件\n viewMode: 'card',\n // 视图模式:card 或 list\n showMobileActionModal: false,\n // 移动端操作模态框\n mobileActionFile: null,\n // 当前移动端操作的文件\n mobileActionIndex: -1,\n // 当前移动端操作的文件索引\n mobileActionIsFolder: false,\n // 是否为文件夹操作\n longPressTimer: null,\n // 长按计时器\n showMobileDirectoryDrawer: false,\n // 移动端目录抽屉\n jumpPage: '',\n // 跳转页码输入\n // 筛选相关状态(数组形式支持多选)\n filters: {\n accessStatus: [],\n // 访问状态: 'normal'(正常), 'blocked'(已屏蔽)\n listType: [],\n // 黑白名单: 'White', 'Block', 'None'\n label: [],\n // 审查结果: 'normal', 'teen', 'adult'\n fileType: [],\n // 文件类型: 'image', 'video', 'audio', 'other'\n channel: [],\n // 渠道类型: 'TelegramNew', 'CloudflareR2', 'S3', 'Discord', 'HuggingFace', 'WebDAV', 'External'\n channelName: [] // 渠道名称: 动态获取\n },\n channelNameOptions: [],\n // 动态从文件列表中提取\n // 移动文件对话框相关状态\n showMoveDialog: false,\n // 移动文件对话框\n moveTargetPath: '/',\n // 移动目标路径\n moveFileKey: '',\n // 当前移动的文件key\n moveFileIndex: -1,\n // 当前移动的文件索引\n isBatchMove: false,\n // 是否为批量移动\n pageSwipeStartX: null,\n pageSwipeStartY: null,\n pageSwipeStartTime: 0\n };\n },\n components: {\n DashboardTabs,\n TagManagementDialog,\n BatchTagDialog,\n SkeletonLoader,\n FileCard,\n FolderCard,\n FileListItem,\n FileDetailDialog,\n BatchActionBar,\n MobileActionSheet,\n MobileDirectoryDrawer,\n DashboardCheckbox,\n FilterDropdown,\n MoveFileDialog,\n LanguageSwitcher\n },\n setup() {\n const cardContainerRef = ref(null);\n const listContainerRef = ref(null);\n const viewModeRef = ref('card');\n const itemsRef = ref([]);\n const {\n isDragging,\n selectionRect\n } = useDragSelect({\n modes: {\n card: {\n containerRef: cardContainerRef,\n itemSelector: '.img-card'\n },\n list: {\n containerRef: listContainerRef,\n itemSelector: '.list-item'\n }\n },\n viewMode: viewModeRef,\n items: itemsRef\n });\n return {\n cardContainerRef,\n listContainerRef,\n viewModeRef,\n itemsRef,\n isDragging,\n selectionRect\n };\n },\n computed: {\n ...mapGetters(['adminUrlSettings', 'userConfig']),\n filteredTableData() {\n return this.tableData;\n },\n totalPages() {\n return Math.ceil(this.filteredTableData.length / this.pageSize) || 1;\n },\n // 基于当前文件夹直接子文件和子文件夹数量计算的真实总页数\n realTotalPages() {\n const total = this.directFolderCount + this.directFileCount;\n return Math.ceil(total / this.pageSize) || 1;\n },\n // 计算当前激活的筛选条件数量(数组形式)\n activeFilterCount() {\n return Object.values(this.filters).reduce((count, arr) => count + (Array.isArray(arr) ? arr.length : 0), 0);\n },\n // 判断是否处于搜索或筛选模式\n hasSearchOrFilter() {\n return this.isSearchMode || this.activeFilterCount > 0;\n },\n paginatedTableData() {\n const sortedData = this.sortData(this.filteredTableData);\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n let data = sortedData.slice(start, end);\n // 增加previewSrcList属性,用于预览图片\n const fullList = data.filter(file => this.isImage(file)).map(file => this.getFileLink(file.name));\n data.forEach(file => {\n if (this.isImage(file)) {\n // 重新排序,索引大于等于当前索引的元素在前,否则在后\n file.previewSrcList = fullList.slice(fullList.indexOf(this.getFileLink(file.name))).concat(fullList.slice(0, fullList.indexOf(this.getFileLink(file.name))));\n }\n });\n // 增加channelTag属性,用于显示渠道信息\n data.forEach(file => {\n if (file.metadata?.Channel === 'TelegramNew' || file.metadata?.Channel === 'Telegram') {\n file.channelTag = 'TG';\n } else if (file.metadata?.Channel === 'CloudflareR2') {\n file.channelTag = 'R2';\n } else if (file.metadata?.Channel === 'S3') {\n file.channelTag = 'S3';\n } else if (file.metadata?.Channel === 'Discord') {\n file.channelTag = 'DC';\n } else if (file.metadata?.Channel === 'HuggingFace') {\n file.channelTag = 'HF';\n } else if (file.metadata?.Channel === 'WebDAV') {\n file.channelTag = 'WD';\n } else if (file.metadata?.Channel === 'External') {\n file.channelTag = this.$t('dashboard.externalTag');\n } else {\n file.channelTag = this.$t('dashboard.unknownTag');\n }\n });\n return data;\n },\n sortIcon() {\n return this.sortOption === 'dateDesc' ? 'sort-amount-down' : 'sort-alpha-up';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n detailDialogWidth() {\n return window.innerWidth > 768 ? '70%' : '90%';\n },\n accessType() {\n if (this.detailFile?.metadata?.ListType === 'White') {\n return this.$t('filter.normal');\n } else if (this.detailFile?.metadata?.ListType === 'Block' || this.detailFile?.metadata?.Label === 'adult') {\n return this.$t('filter.blocked');\n } else {\n return this.$t('filter.normal');\n }\n },\n allUrl() {\n // 外链图片均采用外链\n if (this.detailFile?.metadata?.Channel === 'External') {\n return {\n 'originUrl': `${this.detailFile?.metadata?.ExternalLink}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.detailFile?.metadata?.ExternalLink})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.detailFile?.metadata?.ExternalLink}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n } else {\n return {\n 'originUrl': `${this.rootUrl}${this.detailFile?.name}`,\n 'mdUrl': `![${this.detailFile?.metadata?.FileName || this.detailFile?.name}](${this.rootUrl}${this.detailFile?.name})`,\n 'htmlUrl': `\"${this.detailFile?.metadata?.FileName`,\n 'bbUrl': `[img]${this.rootUrl}${this.detailFile?.name}[/img]`,\n 'tgId': this.detailFile?.metadata?.TgFileId || this.$t('fileDetail.unknown'),\n 'S3Location': this.detailFile?.metadata?.S3Location || this.$t('fileDetail.unknown'),\n 'S3CdnFileUrl': this.detailFile?.metadata?.S3CdnFileUrl || this.$t('fileDetail.unknown')\n };\n }\n },\n tableColumnNum() {\n return window.innerWidth > 768 ? 3 : 1;\n },\n tablePreviewSpan() {\n return window.innerWidth > 768 ? 2 : 1;\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n selectPage() {\n // 如果当前页所有文件都被选中,则返回 true,否则返回 false\n return this.paginatedTableData.every(file => file.selected);\n },\n selectedPageFiles() {\n // 如果当前页有文件被选中,则返回 true,否则返回 false\n return this.paginatedTableData.some(file => file.selected);\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.userConfig?.urlPrefix || `${document.location.origin}/file/`;\n },\n isSelectAll: {\n get() {\n return this.paginatedTableData.length > 0 && this.paginatedTableData.every(file => file.selected);\n },\n set(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n }\n },\n isIndeterminate() {\n const selectedCount = this.paginatedTableData.filter(file => file.selected).length;\n return selectedCount > 0 && selectedCount < this.paginatedTableData.length;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 5 : 7;\n }\n },\n watch: {\n // Sync viewMode data property to the ref used by useDragSelect\n viewMode: {\n handler(newVal) {\n this.viewModeRef = newVal;\n },\n immediate: true\n },\n // Sync paginatedTableData computed property to the ref used by useDragSelect\n paginatedTableData: {\n handler(newVal) {\n this.itemsRef = newVal;\n },\n immediate: true\n },\n tableData: {\n handler(newData) {\n // selectedFiles 增加 newData中新选中,不包含在 selectedFiles 中的文件\n this.selectedFiles = this.selectedFiles.concat(newData.filter(file => file.selected && !this.selectedFiles.includes(file)));\n // selectedFiles 删掉 newData 中已取消选中的文件\n this.selectedFiles = this.selectedFiles.filter(file => file.selected);\n // selectedFiles 删掉 tableData 中已删除的文件\n this.selectedFiles = this.selectedFiles.filter(file => newData.includes(file));\n },\n deep: true\n },\n sortOption(newOption) {\n localStorage.setItem('sortOption', newOption);\n },\n defaultUrlFormat(newFormat) {\n localStorage.setItem('defaultUrlFormat', newFormat);\n },\n showdetailDialog(newVal) {\n if (newVal) {\n this.activeUrlTab = this.defaultUrlFormat || 'originUrl';\n }\n },\n customUrlPrefix(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setAdminUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n currentPath(val) {\n // 页面切换时,取消选择的内容\n this.tableData.forEach(file => file.selected = false);\n }\n },\n methods: {\n // 切换视图模式\n setViewMode(mode) {\n if (this.viewMode === mode) {\n return;\n }\n this.viewMode = mode;\n localStorage.setItem('viewMode', this.viewMode);\n },\n // 列表视图全选当前页\n handleSelectAllPage(val) {\n this.paginatedTableData.forEach(file => file.selected = val);\n },\n // 移动端长按开始\n handleTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = false;\n this.showMobileActionModal = true;\n }, 500); // 500ms 长按触发\n },\n // 移动端长按结束/取消\n handleTouchEnd() {\n if (this.longPressTimer) {\n clearTimeout(this.longPressTimer);\n this.longPressTimer = null;\n }\n },\n // 文件夹长按开始\n handleFolderTouchStart(item, index) {\n this.longPressTimer = setTimeout(() => {\n this.mobileActionFile = item;\n this.mobileActionIndex = index;\n this.mobileActionIsFolder = true;\n this.showMobileActionModal = true;\n }, 500);\n },\n // 处理移动端操作\n handleMobileAction(action) {\n const file = this.mobileActionFile;\n const index = this.mobileActionIndex;\n this.showMobileActionModal = false;\n if (!file) return;\n switch (action) {\n case 'detail':\n this.openDetailDialog(index, file.name);\n break;\n case 'copy':\n this.handleCopy(index, file.name);\n break;\n case 'folderCopy':\n this.handleFolderCopy(file.name);\n break;\n case 'download':\n this.handleDownload(file.name);\n break;\n case 'move':\n this.handleMove(index, file.name);\n break;\n case 'delete':\n this.handleDelete(index, file.name);\n break;\n case 'tag':\n this.handleTagManagement(file.name);\n break;\n }\n },\n // 返回上一级目录\n handleGoBack() {\n const pathParts = this.currentPath.split('/').filter(Boolean);\n if (pathParts.length > 0) {\n pathParts.pop();\n const parentPath = pathParts.join('/');\n this.navigateToFolder(parentPath);\n }\n this.showMobileDirectoryDrawer = false;\n },\n // 获取标签颜色\n getTagColor(index) {\n const colors = ['linear-gradient(135deg, #667eea 0%, #764ba2 100%)', 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', 'linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)', 'linear-gradient(135deg, #fa709a 0%, #fee140 100%)', 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)'];\n return colors[index % colors.length];\n },\n // 视频hover播放控制\n handleVideoHover(event, isEnter) {\n const video = event.target;\n if (isEnter) {\n video.play().catch(() => {});\n } else {\n video.pause();\n video.currentTime = 0;\n }\n },\n // 格式化文件大小\n formatFileSize(bytes) {\n if (!bytes || bytes === 0) return '-';\n bytes = Number(bytes);\n if (isNaN(bytes)) return '-';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let i = 0;\n while (bytes >= 1024 && i < units.length - 1) {\n bytes /= 1024;\n i++;\n }\n return bytes.toFixed(i > 0 ? 1 : 0) + ' ' + units[i];\n },\n handleSearch() {\n this.search = this.tempSearch;\n this.isSearchMode = this.search.trim() !== '';\n this.currentPage = 1; // 重置到第一页\n\n // 解析搜索字符串,提取标签和关键字\n // 支持 #tag 表示包含标签,-#tag 表示排除标签\n if (this.search && this.search.trim()) {\n const includeTags = [];\n const excludeTags = [];\n\n // 匹配 -#tag 和 #tag\n let searchText = this.search;\n\n // 先匹配排除标签 -#tag\n const excludeTagRegex = /-#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(excludeTagRegex, (match, tag) => {\n excludeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 再匹配包含标签 #tag\n const includeTagRegex = /#([\\w\\u4e00-\\u9fa5\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af\\.\\+\\-]+)/g;\n searchText = searchText.replace(includeTagRegex, (match, tag) => {\n includeTags.push(tag.toLowerCase());\n return ' ';\n });\n\n // 清理剩余的关键字(去除多余空格)\n this.searchKeywords = searchText.replace(/\\s+/g, ' ').trim();\n\n // 构建标签查询字符串\n this.searchIncludeTags = includeTags.join(',');\n this.searchExcludeTags = excludeTags.join(',');\n console.log('Search keywords:', this.searchKeywords);\n console.log('Include tags:', this.searchIncludeTags);\n console.log('Exclude tags:', this.searchExcludeTags);\n } else {\n this.searchKeywords = '';\n this.searchIncludeTags = '';\n this.searchExcludeTags = '';\n }\n this.refreshFileList();\n },\n // 处理筛选变化(来自 FilterDropdown 组件)\n handleFilterChange({\n type,\n filters\n }) {\n this.filters = filters;\n this.currentPage = 1; // 重置到第一页\n this.refreshFileList();\n },\n // 清除所有筛选条件\n clearFilters() {\n this.filters = {\n listType: [],\n label: [],\n fileType: [],\n channel: [],\n channelName: []\n };\n this.currentPage = 1;\n this.refreshFileList();\n },\n // 从 API 获取所有渠道名称\n async extractChannelNames() {\n try {\n const response = await fetchWithAuth('/api/channels?includeDisabled=true', {\n method: 'GET'\n });\n if (response.ok) {\n const channels = await response.json();\n const channelOptions = [];\n\n // 类型映射(显示名称)\n const typeLabels = {\n telegram: 'Telegram',\n cfr2: 'Cloudflare R2',\n s3: 'S3',\n discord: 'Discord',\n huggingface: 'HuggingFace',\n webdav: 'WebDAV'\n };\n\n // 按类型提取渠道名称,channel.type是类型内部存储名称(可能根据版本有变化),type是类型对外名称\n Object.entries(channels).forEach(([type, channelList]) => {\n if (Array.isArray(channelList) && channelList.length > 0) {\n channelList.forEach(channel => {\n if (channel.name) {\n channelOptions.push({\n name: channel.name,\n type: channel.type,\n typeLabel: typeLabels[type] || type,\n // 使用 channel.type:channel.name 作为唯一标识\n value: `${channel.type}:${channel.name}`\n });\n }\n });\n }\n });\n\n // 按类型和名称排序\n channelOptions.sort((a, b) => {\n if (a.type !== b.type) {\n return a.type.localeCompare(b.type);\n }\n return a.name.localeCompare(b.name);\n });\n this.channelNameOptions = channelOptions;\n }\n } catch (error) {\n console.error('Failed to fetch channel names:', error);\n }\n },\n handleDownload(key) {\n const link = document.createElement('a');\n link.href = this.getFileLink(key);\n link.download = key;\n link.click();\n },\n openDetailDialog(index, key) {\n this.detailFile = this.paginatedTableData[index];\n this.showdetailDialog = true;\n },\n handleTabClick(tab) {\n this.activeUrlTab = tab.props.name;\n },\n handleUrlClick(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: this.$t('dashboard.copySuccess')\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: this.$t('dashboard.copyFailed')\n });\n });\n },\n handleDetailDelete(key) {\n this.$confirm(this.$t('dashboard.deleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n this.showdetailDialog = false;\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBlock(key) {\n this.$confirm(this.$t('dashboard.blockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/block/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.blockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.blockFailed')));\n }).catch(() => console.log('Block cancelled'));\n },\n handleWhite(key) {\n this.$confirm(this.$t('dashboard.whiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/white/${key}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.$message.success(this.$t('dashboard.whiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.whiteFailed')));\n }).catch(() => console.log('White cancelled'));\n },\n handleDelete(index, key) {\n // 判断是否为文件夹\n const isFolder = this.tableData.find(file => file.name === key).isFolder;\n this.$confirm(isFolder ? this.$t('dashboard.deleteFolderConfirm') : this.$t('dashboard.deleteFileConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n fetchWithAuth(`/api/manage/delete/${key}?folder=${isFolder}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.updateStats(-1, false);\n fileManager.removeFile(key);\n this.$message.success(this.$t('dashboard.deleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.deleteFailed')));\n }).catch(() => console.log('Delete cancelled'));\n },\n handleBatchDelete() {\n this.$confirm(this.$t('dashboard.batchDeleteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/delete/${file.name}?folder=${isFolder}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData.splice(fileIndex, 1);\n }\n fileManager.removeFile(this.selectedFiles[index].name);\n }\n });\n this.selectedFiles = [];\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.batchDeleteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchDeleteFailed')));\n }).catch(() => console.log('Batch delete cancelled'));\n },\n async handleBatchCopy() {\n // 分离文件和文件夹\n const files = this.selectedFiles.filter(item => !item.isFolder);\n const folders = this.selectedFiles.filter(item => item.isFolder);\n\n // 如果有文件夹,显示加载状态\n let loading = null;\n if (folders.length > 0) {\n loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n }\n try {\n // 收集所有文件(包括文件夹内的文件)\n let allFiles = [...files];\n\n // 递归获取所有文件夹内的文件\n for (const folder of folders) {\n try {\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folder.name)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n if (data.files && data.files.length > 0) {\n allFiles = allFiles.concat(data.files);\n }\n } catch (error) {\n console.error(`获取文件夹 ${folder.name} 内容失败:`, error);\n }\n }\n if (loading) loading.close();\n if (allFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 生成所有链接\n const links = allFiles.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.batchCopySuccess', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n }\n } catch (error) {\n if (loading) loading.close();\n console.error('Batch copy failed:', error);\n this.$message.error(this.$t('dashboard.batchCopyFailed'));\n }\n },\n copyToClipboardFallback(text) {\n const textarea = document.createElement('textarea');\n document.body.appendChild(textarea);\n textarea.style.position = 'fixed';\n textarea.style.clip = 'rect(0 0 0 0)';\n textarea.style.top = '10px';\n textarea.value = text;\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n this.$message.success(this.$t('dashboard.batchCopyLinksSuccess'));\n },\n handleCopy(index, key) {\n let text = '';\n if (this.paginatedTableData[index].metadata?.Channel === 'External') {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = this.paginatedTableData[index].metadata?.ExternalLink;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.paginatedTableData[index].metadata?.ExternalLink})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.paginatedTableData[index].metadata?.ExternalLink}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n } else {\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n text = `${this.rootUrl}${key}`;\n break;\n case 'mdUrl':\n text = `![${this.paginatedTableData[index].metadata?.FileName || key}](${this.rootUrl}${key})`;\n break;\n case 'htmlUrl':\n text = `\"${this.paginatedTableData[index].metadata?.FileName`;\n break;\n case 'bbUrl':\n text = `[img]${this.rootUrl}${key}[/img]`;\n break;\n case 'tgId':\n text = this.paginatedTableData[index].metadata?.TgFileId || 'none';\n break;\n case 's3Location':\n text = this.paginatedTableData[index].metadata?.S3Location || 'none';\n break;\n }\n }\n navigator.clipboard ? navigator.clipboard.writeText(text).then(() => this.$message.success(this.$t('dashboard.copyFileLinkSuccess'))) : this.copyToClipboardFallback(text);\n },\n async loadMoreData() {\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, 60, this.filters);\n // 获取新的文件列表后\n await this.fetchFileList();\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadMoreFailed'));\n } finally {\n this.loading = false;\n }\n },\n updateStats(num, init = false) {\n if (init) {\n this.Number = num;\n } else {\n this.Number += num;\n }\n },\n sort(command) {\n this.sortOption = command;\n },\n sortData(data) {\n // 文件夹始终在前\n const folders = data.filter(file => file.isFolder);\n const files = data.filter(file => !file.isFolder);\n if (this.sortOption === 'dateDesc') {\n // 按时间降序\n folders.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n files.sort((a, b) => new Date(b.metadata?.TimeStamp) - new Date(a.metadata?.TimeStamp));\n } else {\n // 按文件名升序\n folders.sort((a, b) => a.name.localeCompare(b.name));\n files.sort((a, b) => a.name.localeCompare(b.name));\n }\n return folders.concat(files);\n },\n handleVideoClick(event) {\n const videoElement = event.target;\n if (videoElement.requestFullscreen) {\n videoElement.requestFullscreen();\n } else if (videoElement.webkitRequestFullscreen) {\n // Safari/Old Chrome\n videoElement.webkitRequestFullscreen();\n } else if (videoElement.mozRequestFullScreen) {\n // Firefox\n videoElement.mozRequestFullScreen();\n } else if (videoElement.msRequestFullscreen) {\n // IE/Edge\n videoElement.msRequestFullscreen();\n }\n },\n handleLogout() {\n const url = process.env.NODE_ENV === 'production' ? '/api/auth/logout' : '/api/api/auth/logout';\n fetch(url, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authType: 'admin'\n })\n }).finally(() => {\n this.$store.commit('setAdminLoggedIn', false);\n this.$router.push('/adminLogin');\n });\n },\n handleSelectPage() {\n if (this.selectPage) {\n this.paginatedTableData.forEach(file => file.selected = false);\n } else {\n this.paginatedTableData.forEach(file => file.selected = true);\n }\n },\n clearSelection() {\n this.tableData.forEach(file => file.selected = false);\n this.selectedFiles = [];\n },\n handleBatchAction(command) {\n if (command === 'copy') {\n this.handleBatchCopy();\n } else if (command === 'delete') {\n this.handleBatchDelete();\n } else if (command === 'download') {\n this.handleBatchDownload();\n } else if (command === 'move') {\n this.handleBatchMove();\n } else if (command === 'tagManagement') {\n this.handleBatchTagManagement();\n } else if (command === 'ban') {\n this.handleBatchBlock();\n } else if (command === 'white') {\n this.handleBatchWhite();\n }\n },\n handleMove(index, key) {\n // 打开自定义移动对话框\n this.moveFileKey = key;\n this.moveFileIndex = index;\n this.isBatchMove = false;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n handleBatchMove() {\n // 打开自定义移动对话框(批量模式)\n this.isBatchMove = true;\n this.moveTargetPath = '/';\n this.showMoveDialog = true;\n },\n // 确认移动操作\n confirmMove(targetPath) {\n const value = targetPath;\n // 使用共享验证器验证路径\n const validation = validateFolderPath(value);\n if (!validation.valid) {\n this.$message.error(validation.error);\n return;\n }\n // 去掉开头的 /,结尾若没有 /,则加上\n const newPath = value.replace(/^\\/+/, '') + (value.endsWith('/') ? '' : value === '' ? '' : '/');\n // 判断目标文件夹是否是当前文件夹\n if (newPath === this.currentPath) {\n this.$message.warning(this.$t('dashboard.moveTargetSameAsCurrent'));\n return;\n }\n\n // 关闭对话框\n this.showMoveDialog = false;\n if (this.isBatchMove) {\n // 批量移动\n this.executeBatchMove(newPath);\n } else {\n // 单个文件移动\n this.executeSingleMove(newPath);\n }\n },\n // 执行单个文件移动\n executeSingleMove(newPath) {\n const key = this.moveFileKey;\n const isFolder = this.tableData.find(file => file.name === key)?.isFolder;\n fetchWithAuth(`/api/manage/move/${key}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n }).then(response => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === key);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + key.split('/').pop();\n fileManager.moveFile(key, newKey, isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n }\n this.updateStats(-1, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n } else {\n return Promise.reject('Request failed');\n }\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n // 执行批量移动\n executeBatchMove(newPath) {\n const promises = this.selectedFiles.map(file => {\n const isFolder = file.isFolder;\n return fetchWithAuth(`/api/manage/move/${file.name}?folder=${isFolder}&dist=${encodeURIComponent(newPath)}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n let successNum = 0;\n results.forEach((response, index) => {\n if (response.ok) {\n successNum++;\n const file = this.selectedFiles[index];\n file.selected = false;\n const fileIndex = this.tableData.findIndex(f => f.name === file.name);\n if (fileIndex !== -1) {\n // 更新本地文件管理器\n const newKey = newPath + file.name.split('/').pop();\n fileManager.moveFile(file.name, newKey, file.isFolder, this.currentPath);\n // 移除文件\n this.tableData.splice(fileIndex, 1);\n }\n }\n });\n // 强制重新渲染内容\n this.$nextTick(() => {\n const tempData = [...this.tableData];\n this.tableData = [];\n this.$nextTick(() => {\n this.tableData = tempData;\n });\n });\n this.updateStats(-successNum, false);\n this.$message.success(this.$t('dashboard.moveSuccess'));\n }).then(() => {\n this.refreshLocalFileList();\n }).catch(() => this.$message.error(this.$t('dashboard.moveFailed')));\n },\n handleBatchBlock() {\n this.$confirm(this.$t('dashboard.batchBlockConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/block/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'Block';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchBlockSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchBlockFailed')));\n }).catch(() => console.log('Batch block cancelled'));\n },\n handleBatchWhite() {\n this.$confirm(this.$t('dashboard.batchWhiteConfirm'), this.$t('dashboard.deleteConfirmTitle'), {\n confirmButtonText: this.$t('dashboard.deleteConfirmOk'),\n cancelButtonText: this.$t('dashboard.deleteConfirmCancel'),\n type: 'warning'\n }).then(() => {\n // 跳过文件夹\n const promises = this.selectedFiles.map(file => {\n if (file.isFolder) {\n return Promise.resolve({\n ok: false\n });\n }\n return fetchWithAuth(`/api/manage/white/${file.name}`, {\n method: 'GET'\n });\n });\n Promise.all(promises).then(results => {\n results.forEach((response, index) => {\n if (response.ok) {\n const fileIndex = this.tableData.findIndex(file => file.name === this.selectedFiles[index].name);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata.ListType = 'White';\n }\n }\n });\n this.$message.success(this.$t('dashboard.batchWhiteSuccess'));\n }).catch(() => this.$message.error(this.$t('dashboard.batchWhiteFailed')));\n }).catch(() => console.log('Batch white cancelled'));\n },\n handleBatchDownload() {\n // 将选中文件打包成 zip 文件下载\n const zip = new JSZip();\n const folder = zip.folder('files');\n // 构造Promise数组,等待所有文件下载完成后再打包\n const fileNameCount = {}; // 用于跟踪文件名出现的次数\n\n const downloadPromises = this.selectedFiles.map(async file => {\n // 跳过文件夹\n if (file.isFolder) {\n return;\n }\n const response = await fetch(this.getFileLink(file.name));\n const blob = await response.blob();\n // 检查文件名是否已经存在\n let fileName = file.metadata?.FileName || file.name;\n if (fileNameCount[fileName]) {\n // 如果已经存在,则在文件名后加上编号\n const extension = fileName.substring(fileName.lastIndexOf('.'));\n const baseName = fileName.substring(0, fileName.lastIndexOf('.'));\n fileName = `${baseName}(${fileNameCount[fileName]})${extension}`;\n fileNameCount[file.name]++;\n } else {\n // 如果不存在,则初始化为1\n fileNameCount[fileName] = 1;\n }\n // 将文件添加到 zip 文件夹中\n folder.file(fileName, blob);\n });\n Promise.all(downloadPromises).then(() => zip.generateAsync({\n type: 'blob'\n })).then(blob => {\n const link = document.createElement('a');\n link.href = URL.createObjectURL(blob);\n link.download = 'files.zip';\n link.click();\n });\n },\n isVideo(file) {\n // 排除音频文件\n if (this.isAudio(file)) return false;\n let flag = file.metadata?.FileType?.includes('video');\n // 用文件名后缀判断是否为视频文件\n if (!flag) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'avi', 'mov', 'flv', 'wmv', 'mkv', 'rmvb', '3gp', 'mpg', 'mpeg', 'm4v', 'f4v', 'rm', 'asf', 'dat', 'ts', 'vob', 'swf', 'divx', 'xvid', 'm2ts', 'mts', 'm2v', '3g2', '3gp2', '3gpp', '3gpp2', 'mpe', 'm1v', 'mpv', 'mpv2', 'mp2v', 'm2t', 'm2ts', 'm2v', 'm4v'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = videoExtensions.includes(extension);\n }\n return flag;\n },\n isAudio(file) {\n let flag = file.metadata?.FileType?.includes('audio');\n // 用文件名后缀判断是否为音频文件\n if (!flag) {\n const audioExtensions = ['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma', 'm4a', 'ape', 'aiff', 'alac', 'opus', 'mid', 'midi', 'm4b', 'm4p', 'm4r', 'amr', 'au', 'ra', 'ram'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = audioExtensions.includes(extension);\n }\n return flag;\n },\n isImage(file) {\n let flag = file.metadata?.FileType?.includes('image');\n // 用文件名后缀判断是否为图片文件\n if (!flag) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'ico', 'tiff', 'tif', 'psd', 'ai', 'eps', 'raw', 'cr2', 'nef', 'orf', 'sr2', 'dng', 'arw', 'rw2', 'raf', 'pef', 'x3f', 'srf', 'erf', 'mrw', 'nrw', 'kdc', 'dcr', 'mef', 'mos', 'crw', 'raf', 'rwl', 'srw', '3fr', 'fff', 'iiq', 'qtk', 'bay', 'k25', 'kdc', 'dcs', 'drf', 'dng', 'erf', 'kdc', 'mdc', 'mef', 'mos', 'mrw', 'nef', 'nrw', 'orf', 'pef', 'ptx', 'pxn', 'r3d', 'raf', 'raw', 'rwl', 'rw2', 'rwz', 'sr2', 'srf', 'x3f'];\n const extension = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase();\n flag = imageExtensions.includes(extension);\n }\n return flag;\n },\n getFileLink(filename) {\n const fileLink = process.env.NODE_ENV === 'production' ? `/file/${filename}?from=admin` : `/api/file/${filename}?from=admin`;\n return fileLink;\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (this.currentPage === Math.ceil(this.tableData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n isMobileViewport() {\n return window.innerWidth < 768;\n },\n updateResponsivePageSize() {\n const nextPageSize = this.isMobileViewport() ? 16 : 15;\n if (this.pageSize === nextPageSize) return;\n const firstVisibleIndex = (this.currentPage - 1) * this.pageSize;\n this.pageSize = nextPageSize;\n this.currentPage = Math.min(Math.floor(firstVisibleIndex / nextPageSize) + 1, this.realTotalPages);\n },\n isSwipeIgnoredTarget(target) {\n return Boolean(target?.closest?.('button, a, input, textarea, select, .el-checkbox, .action-btn, .list-action-btn'));\n },\n handlePageSwipeStart(event) {\n if (!this.isMobileViewport() || this.isDragging || this.loading || this.showMobileActionModal || this.showMobileDirectoryDrawer || this.isSwipeIgnoredTarget(event.target)) {\n this.resetPageSwipe();\n return;\n }\n const touch = event.touches?.[0];\n if (!touch) return;\n this.pageSwipeStartX = touch.clientX;\n this.pageSwipeStartY = touch.clientY;\n this.pageSwipeStartTime = Date.now();\n },\n async handlePageSwipeEnd(event) {\n if (this.pageSwipeStartX === null || this.pageSwipeStartY === null) return;\n const touch = event.changedTouches?.[0];\n if (!touch) {\n this.resetPageSwipe();\n return;\n }\n const deltaX = touch.clientX - this.pageSwipeStartX;\n const deltaY = touch.clientY - this.pageSwipeStartY;\n const elapsed = Date.now() - this.pageSwipeStartTime;\n this.resetPageSwipe();\n if (elapsed > 700 || Math.abs(deltaX) < 64 || Math.abs(deltaX) < Math.abs(deltaY) * 1.35) {\n return;\n }\n const targetPage = deltaX < 0 ? this.currentPage + 1 : this.currentPage - 1;\n await this.goToSwipePage(targetPage);\n },\n resetPageSwipe() {\n this.pageSwipeStartX = null;\n this.pageSwipeStartY = null;\n this.pageSwipeStartTime = 0;\n },\n async goToSwipePage(page) {\n if (page < 1 || page > this.realTotalPages || page === this.currentPage) return;\n if (page > this.totalPages) {\n await this.loadMoreDataUntilPage(page);\n return;\n }\n this.handlePageChange(page);\n },\n // 跳转到指定页码\n handleJumpPage() {\n const page = parseInt(this.jumpPage);\n if (isNaN(page) || page < 1) {\n this.$message.warning(this.$t('dashboard.invalidPageNumber'));\n return;\n }\n if (page > this.realTotalPages) {\n this.$message.warning(this.$t('dashboard.pageExceedsMax', {\n max: this.realTotalPages\n }));\n return;\n }\n // 如果目标页超过当前已加载的页数,需要先加载更多数据\n if (page > this.totalPages) {\n this.$message.info(this.$t('dashboard.loadingData'));\n this.loadMoreDataUntilPage(page);\n } else {\n this.currentPage = page;\n }\n this.jumpPage = '';\n },\n // 加载数据直到指定页\n async loadMoreDataUntilPage(targetPage) {\n this.loading = true;\n try {\n // 计算目标页需要的文件数量(不包含文件夹)\n // 目标页最后一个项目的索引 = targetPage * pageSize\n // 需要的文件数 = 目标索引 - 已有文件夹数量\n const targetIndex = targetPage * this.pageSize;\n const currentFolderCount = this.filteredTableData.filter(item => item.isFolder).length;\n const currentFileCount = this.filteredTableData.filter(item => !item.isFolder).length;\n\n // 需要加载的文件数量 = 目标位置需要的文件数 - 当前已加载的文件数\n const neededFileCount = Math.max(0, targetIndex - currentFolderCount - currentFileCount);\n if (neededFileCount > 0) {\n await fileManager.loadMoreFiles(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, neededFileCount, this.filters);\n await this.fetchFileList();\n }\n this.currentPage = Math.min(targetPage, this.totalPages);\n } catch (error) {\n this.$message.error(this.$t('dashboard.loadDataFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 判断是否为文件夹\n isFolder(item) {\n // 如果是已经标记为文件夹的项目,直接返回true\n if (item.isFolder) {\n return true;\n }\n\n // 获取真实的文件路径(去除URL前缀)\n let path = item.name;\n if (path.startsWith('http')) {\n path = path.split('/file/')[1];\n }\n\n // 如果文件名包含'/',需要判断是否是当前路径下的文件\n if (path && path.includes('/')) {\n // 获取相对于当前路径的部分\n const relativePath = this.currentPath ? path.substring(this.currentPath.length) : path;\n\n // 如果在根目录,第一个斜杠前的部分就是文件夹\n if (this.currentPath === '') {\n return !path.split('/')[0].includes('.');\n }\n\n // 如果在子文件夹中,检查相对路径是否还包含其他文件夹\n return relativePath.includes('/');\n }\n return false;\n },\n // 获取文件夹名称\n getFolderName(path) {\n let folderName = '';\n // 如果是文件夹路径,只返回最后一级文件夹名\n if (path && path.includes('/')) {\n const parts = path.split('/');\n // 如果是根目录下的文件夹\n if (this.currentPath === '') {\n folderName = parts[0];\n } else {\n // 如果是子文件夹\n const relativePath = path.substring(this.currentPath.length);\n folderName = relativePath.split('/')[0];\n }\n } else {\n folderName = path;\n }\n const maxLength = 20; // Adjust max length as needed\n if (folderName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${folderName.substring(0, startLength)}...${folderName.substring(folderName.length - endLength)}`;\n }\n return folderName;\n },\n // 获取文件名称(去除路径和URL前缀)\n getFileName(path) {\n let fileName = path.split('/').pop();\n const maxLength = 20; // Adjust max length as needed, ensure it fits in one line\n if (fileName.length > maxLength) {\n const startLength = Math.floor((maxLength - 3) / 2);\n const endLength = Math.ceil((maxLength - 3) / 2);\n return `${fileName.substring(0, startLength)}...${fileName.substring(fileName.length - endLength)}`;\n }\n return fileName;\n },\n // 获取文件名前半部分(用于中间省略效果)\n getFileNameStart(name) {\n if (!name) return '';\n // 如果文件名较短,返回全部\n if (name.length <= 30) return name;\n // 保留开头部分(约60%的长度用于显示前半部分)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回文件名主体部分\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(baseName.length, Math.floor(name.length * 0.6));\n return baseName.substring(0, keepLength);\n }\n // 无扩展名的情况\n return name.substring(0, Math.floor(name.length * 0.6));\n },\n // 获取文件名后半部分(用于中间省略效果)\n getFileNameEnd(name) {\n if (!name) return '';\n // 如果文件名较短,返回空\n if (name.length <= 30) return '';\n // 保留末尾部分(包含扩展名)\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n // 有扩展名的情况:返回最后几个字符 + 扩展名\n const ext = name.substring(dotIndex);\n const baseName = name.substring(0, dotIndex);\n const keepLength = Math.min(8, Math.floor(baseName.length * 0.2));\n return '…' + baseName.substring(baseName.length - keepLength) + ext;\n }\n // 无扩展名的情况\n const keepLength = Math.min(10, Math.floor(name.length * 0.3));\n return '…' + name.substring(name.length - keepLength);\n },\n // 进入文件夹\n enterFolder(folderPath) {\n // 确保路径末尾有 '/'\n this.currentPath = folderPath + (folderPath.endsWith('/') ? '' : '/');\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 导航到指定文件夹\n navigateToFolder(path) {\n // 确保空路径时不添加 '/'\n this.currentPath = path ? path + (path.endsWith('/') ? '' : '/') : '';\n // 刷新文件列表,到指定currentPath下\n this.refreshFileList();\n },\n // 获取文件列表\n async fetchFileList() {\n this.loading = true;\n try {\n // 从本地存储获取数据\n const data = fileManager.getLocalFileList();\n\n // 解析返回的数据\n const folders = new Set(data.directories || []);\n const files = data.files || [];\n\n // 处理文件夹数据\n const folderItems = Array.from(folders).map(folder => ({\n name: folder,\n isFolder: true,\n selected: false,\n metadata: {\n FileName: folder.split('/').pop()\n }\n }));\n\n // 处理文件数据\n const fileItems = files.map(file => ({\n name: file.name,\n isFolder: false,\n selected: false,\n metadata: file.metadata\n }));\n\n // 更新表格数据\n this.tableData = [...folderItems, ...fileItems];\n\n // 更新统计信息\n this.updateStats(data.totalCount, true);\n\n // 更新直接文件和文件夹数量\n this.directFileCount = data.directFileCount || 0;\n this.directFolderCount = data.directFolderCount || 0;\n } catch (error) {\n console.error('Error fetching file list:', error);\n this.$message.error(this.$t('dashboard.fetchFileListFailed'));\n } finally {\n this.loading = false;\n }\n },\n // 刷新文件列表\n async refreshFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n // 传递标签参数和筛选参数到后端\n const success = await fileManager.refreshFileList(this.currentPath, this.searchKeywords, this.searchIncludeTags, this.searchExcludeTags, this.filters);\n if (success) {\n await this.fetchFileList();\n } else {\n throw new Error('Refresh failed');\n }\n } catch (error) {\n // 认证失败由 fetchWithAuth 统一处理跳转,不重复提示\n if (!error.message?.includes('Unauthorized') && this.$store.state.adminLoggedIn) {\n console.error('Error refreshing file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n }\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // 刷新本地文件列表\n async refreshLocalFileList() {\n this.refreshLoading = true;\n this.loading = true;\n try {\n await this.fetchFileList();\n } catch (error) {\n console.error('Error refreshing local file list:', error);\n this.$message.error(this.$t('dashboard.refreshFailed'));\n } finally {\n this.refreshLoading = false;\n this.loading = false;\n }\n },\n // Tag management methods\n handleTagManagement(fileId) {\n this.currentTagFile = fileId;\n this.showTagDialog = true;\n },\n handleBatchTagManagement() {\n if (this.selectedFiles.length === 0) {\n this.$message.warning(this.$t('dashboard.selectFilesFirst'));\n return;\n }\n this.showBatchTagDialog = true;\n },\n async handleTagsUpdated(tags) {\n // 更新本地文件数据中的标签\n const fileIndex = this.tableData.findIndex(file => file.name === this.currentTagFile);\n if (fileIndex !== -1) {\n // 更新 tableData 中的标签\n if (!this.tableData[fileIndex].metadata) {\n this.tableData[fileIndex].metadata = {};\n }\n this.tableData[fileIndex].metadata.Tags = tags;\n\n // 如果详情对话框正在显示这个文件,也更新详情数据\n if (this.showdetailDialog && this.detailFile?.name === this.currentTagFile) {\n if (!this.detailFile.metadata) {\n this.detailFile.metadata = {};\n }\n this.detailFile.metadata.Tags = tags;\n }\n }\n },\n async handleBatchTagsUpdated() {\n // 刷新文件列表以显示更新后的标签\n await this.refreshLocalFileList();\n },\n handleMetadataUpdated(fileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === fileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 如果 detailFile 正在显示该文件,同步更新 detailFile\n if (this.detailFile && this.detailFile.name === fileId) {\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n }\n },\n handleFileRenamed(oldFileId, newFileId, updatedMetadata) {\n // 更新 tableData 中对应文件的 name(File_ID)和 metadata\n const fileIndex = this.tableData.findIndex(f => f.name === oldFileId);\n if (fileIndex !== -1) {\n this.tableData[fileIndex].name = newFileId;\n this.tableData[fileIndex].metadata = {\n ...this.tableData[fileIndex].metadata,\n ...updatedMetadata\n };\n }\n // 更新 detailFile 引用并关闭/重新打开详情弹窗以刷新链接\n if (this.detailFile && this.detailFile.name === oldFileId) {\n this.detailFile.name = newFileId;\n this.detailFile.metadata = {\n ...this.detailFile.metadata,\n ...updatedMetadata\n };\n // 关闭详情弹窗,然后在下一个 tick 重新打开以刷新所有链接\n this.showdetailDialog = false;\n this.$nextTick(() => {\n this.showdetailDialog = true;\n });\n }\n },\n // 生成单个文件链接\n generateFileLink(key, metadata) {\n const isExternal = metadata?.Channel === 'External';\n const baseUrl = isExternal ? metadata?.ExternalLink : `${this.rootUrl}${key}`;\n const fileName = metadata?.FileName || key;\n switch (this.defaultUrlFormat) {\n case 'originUrl':\n return baseUrl;\n case 'mdUrl':\n return `![${fileName}](${baseUrl})`;\n case 'htmlUrl':\n return `\"${fileName}\"`;\n case 'bbUrl':\n return `[img]${baseUrl}[/img]`;\n case 'tgId':\n return metadata?.TgFileId || '';\n case 's3Location':\n return metadata?.S3Location || '';\n default:\n return baseUrl;\n }\n },\n // 复制文件夹中所有文件的链接\n async handleFolderCopy(folderName) {\n // 显示加载状态\n const loading = this.$loading({\n lock: true,\n text: this.$t('dashboard.fetchingFileList')\n });\n try {\n // 调用 list API 递归获取文件夹内所有文件\n const response = await fetchWithAuth(`/api/manage/list?dir=${encodeURIComponent(folderName)}&recursive=true&count=-1`, {\n method: 'GET'\n });\n const data = await response.json();\n loading.close();\n if (!data.files || data.files.length === 0) {\n this.$message.warning(this.$t('dashboard.folderEmptyNoLinks'));\n return;\n }\n\n // 根据当前链接格式生成所有文件链接\n const links = data.files.map(file => {\n return this.generateFileLink(file.name, file.metadata);\n }).filter(link => link);\n if (links.length === 0) {\n this.$message.warning(this.$t('dashboard.noLinksAvailable'));\n return;\n }\n\n // 复制到剪贴板\n const text = links.join('\\n');\n if (navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n } else {\n this.copyToClipboardFallback(text);\n this.$message.success(this.$t('dashboard.copiedFileLinks', {\n count: links.length\n }));\n }\n } catch (error) {\n loading.close();\n console.error('Copy folder links failed:', error);\n this.$message.error(this.$t('dashboard.copyFolderLinksFailed'));\n }\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('adminBkImg', '.container', false, true);\n this.updateResponsivePageSize();\n window.addEventListener('resize', this.updateResponsivePageSize);\n this.loading = true;\n // 路由守卫已通过 /api/auth/sessionCheck 验证认证状态\n this.showLogoutButton = this.$store.state.adminLoggedIn;\n // 首次加载时刷新文件列表\n this.refreshFileList().then(() => {\n // 获取所有渠道名称\n return this.extractChannelNames();\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error(this.$t('dashboard.syncDataError'));\n }\n }).finally(() => {\n this.loading = false;\n });\n\n // 读取自定义链接设置项\n this.customUrlPrefix = this.adminUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.adminUrlSettings.useCustomUrl;\n\n // 恢复视图模式偏好\n const savedViewMode = localStorage.getItem('viewMode');\n if (savedViewMode === 'card' || savedViewMode === 'list') {\n this.viewMode = savedViewMode;\n }\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.updateResponsivePageSize);\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminDashBoard.vue?vue&type=template&id=57eabdee&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=57eabdee&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-57eabdee\"]])\n\nexport default __exports__","/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n\n\n(c) 2009-2016 Stuart Knightley \nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var e=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=x&&(e.ins_h=(e.ins_h<=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l>>=_)),u>>>=3,l-=3}else{for(z=_+7;l>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(hd?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u>=7;n>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: i18n.global.t('validation.invalidCharacters') \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","width","trigger","transition","reference","onClick","$slots","undefined","default","error","icon","type","size","fetchDirectoryTree","$t","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","value","includes","children","label","windowWidth","window","innerWidth","computed","this","watch","newVal","setTimeout","$refs","treeRef","store","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","response","fetchWithAuth","method","ok","status","json","axios","get","withAuthCode","tree","err","console","startsWith","$emit","__exports__","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_component_el_input","_component_DirectoryTreePicker","_component_el_dialog","dialogVisible","isBatchMove","onClose","handleClose","footer","handleConfirm","targetPath","placeholder","prepend","onSelect","handleDirectorySelect","showTreePicker","text","treeError","handleTreeNodeClick","treeLoading","components","DirectoryTreePicker","Boolean","initialPath","emits","set","val","to","close","active","currentPath","navigate","pathParts","folder","index","length","style","paddingLeft","slice","join","goBack","split","filter","isFolder","handleAction","action","_component_el_tag","_component_el_tab_pane","_component_el_alert","_component_el_tabs","dialogWidth","activeTab","count","fileCount","inputTag","onKeyup","handleAddInputTag","onInput","handleInputChange","clearable","append","showSuggestions","suggestions","tag","selectSuggestion","tagsToAdd","closable","removeFromToAdd","executeAddTags","disabled","commonTags","handleRemoveCommonTag","description","center","handleClearAllTags","selectedFiles","Array","required","debounceTimer","selectedFilesOnly","file","fileIds","map","loadCommonTags","resetData","newTab","tagPromises","encodeURIComponent","responses","Promise","all","allTags","push","tags","every","clearTimeout","trim","fetchSuggestions","prefix","toLowerCase","warning","indexOf","splice","headers","body","JSON","stringify","Error","success","updated","confirm","confirmButtonText","cancelButtonText","then","executeClearTags","catch","info","_component_Loading","_component_el_icon","handleAddTag","currentTags","handleRemoveTag","popularTags","handleAddPopularTag","loadingPopularTags","Loading","fileId","loadFileTags","loadPopularTags","message","_component_el_image","_component_el_descriptions_item","_component_el_descriptions","_component_el_form_item","_component_el_form","isEditing","round","startEdit","openRenameDialog","saveMetadata","editSaving","cancelEdit","onTabClick","handleTabClick","urls","originUrl","readonly","handleUrlClick","mdUrl","htmlUrl","bbUrl","metadata","TgFileId","tgId","S3Location","S3CdnFileUrl","isVideo","src","fileLink","autoplay","muted","loop","openImageLink","isAudio","controls","isImage","fit","lazy","border","column","descColumn","editForm","FileName","FileType","fileSizeDisplay","imageDimensions","Width","Height","orientationIcon","uploadTime","Channel","ChannelName","accessTagType","accessType","Label","UploadIP","UploadAddress","Tags","showRenameDialog","closeRenameDialog","submitRename","renameSaving","renameValidation","valid","onSubmit","renameForm","newFileId","validateRenameInput","INVALID_CHARS","validateFileId","currentFileId","test","Object","fileType","endsWith","TimeStamp","Date","toLocaleString","listType","ListType","height","ratio","sizeBytes","FileSizeBytes","sizeMB","FileSize","toFixed","handleVideoClick","e","video","target","paused","play","pause","input","select","navigator","clipboard","writeText","open","result","oldFileId","_component_el_tooltip","selectedCount","disableTooltip","content","handleClear","actions","command","className","Number","variant","checked","indeterminate","role","ariaChecked","tabindex","handleClick","onKeydown","event","_component_DashboardCheckbox","onTouchstart","onTouchend","onTouchmove","localSelected","toggleSelect","handlePreviewClick","preload","decoding","displayName","fileNameStart","fileNameEnd","item","tagIndex","background","getTagColor","channelTag","uploadDate","DashboardCheckbox","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","fileName","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","isFullscreen","document","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","currentTime","isEnter","folderName","showActions","i","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_component_el_badge","_component_el_checkbox_group","_component_el_dropdown_menu","_component_el_dropdown","dropdown","localFilters","accessStatus","handleFilterChange","accessStatusOptions","option","listTypeOptions","labelOptions","fileTypeOptions","channel","channelOptions","channelNameOptions","channelName","groupedChannelNames","group","typeLabel","channels","clearFilters","activeFilterCount","hidden","filters","values","reduce","arr","groups","forEach","handler","newFilters","isArray","immediate","deep","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_hoisted_49","_component_DashboardTabs","_component_FilterDropdown","_component_el_dropdown_item","_component_el_header","_component_el_breadcrumb_item","_component_el_breadcrumb","_component_SkeletonLoader","_component_FolderCard","_component_FileCard","_component_FileListItem","_component_el_pagination","_component_el_main","_component_el_container","_component_BatchActionBar","_component_FileDetailDialog","_component_el_radio","_component_el_radio_group","_component_el_switch","_component_TagManagementDialog","_component_BatchTagDialog","_component_MobileActionSheet","_component_MobileDirectoryDrawer","_component_MoveFileDialog","tempSearch","handleSearch","suffix","onCommand","sort","sortIcon","showUrlDialog","handleLogout","selectPage","selectedPageFiles","handleSelectPage","viewMode","setViewMode","showMobileDirectoryDrawer","pop","separator","navigateToFolder","isDragging","onTouchstartPassive","handlePageSwipeStart","onTouchendPassive","handlePageSwipeEnd","onTouchcancelPassive","resetPageSwipe","pageSize","paginatedTableData","hasSearchOrFilter","isSearchMode","onEnter","enterFolder","onCopy","handleFolderCopy","onMove","handleMove","onDelete","handleDelete","handleFolderTouchStart","handleTouchEnd","getFileLink","onDetail","openDetailDialog","handleCopy","onDownload","handleDownload","handleTouchStart","isSelectAll","isIndeterminate","handleSelectAllPage","onFolderCopy","position","left","selectionRect","top","layout","total","filteredTableData","currentPage","pagerCount","onCurrentChange","handlePageChange","refreshFileList","refreshLoading","Math","ceil","loadMoreData","realTotalPages","jumpPage","handleJumpPage","onAction","handleBatchAction","onClear","clearSelection","showdetailDialog","detailFile","allUrl","onTagManagement","handleTagManagement","onBlock","handleBlock","onWhite","handleWhite","handleDetailDelete","onMetadataUpdated","handleMetadataUpdated","onFileRenamed","handleFileRenamed","defaultUrlFormat","useCustomUrl","customUrlPrefix","showTagDialog","currentTagFile","onTagsUpdated","handleTagsUpdated","showBatchTagDialog","handleBatchTagsUpdated","showMobileActionModal","mobileActionIsFolder","getFolderName","mobileActionFile","handleMobileAction","onNavigate","onGoBack","handleGoBack","showMoveDialog","moveTargetPath","onConfirm","confirmMove","FileManager","constructor","FILE_LIST_PATH","fileListCache","storageWarningShown","getLocalFileList","fileList","getMutableFileList","files","directories","localStorage","getItem","parse","createEmptyFileList","updateFileListCache","persisted","persistFileListCache","cacheUpdated","setItem","handleStoragePersistError","warn","removeItem","removeError","ElMessage","i18n","global","t","addFile","newFile","addFolder","moveFile","oldPath","newPath","oldFolderIndex","fileIndex","findIndex","pathArray","substring","newFolder","removeFile","removeFolder","dir","getFilesInFolder","subdirectories","buildFilterParams","params","search","includeTags","excludeTags","url","newFileList","isIndexedResponse","loadMoreFiles","start","moreFiles","fileManager","rectIntersects","rectA","rectB","right","bottom","calcSelectionRect","current","min","x","y","abs","useDragSelect","options","modes","mainSelector","items","startPoint","preSelectSnapshot","isAppendMode","MOBILE_BREAKPOINT","listenerAttached","EDGE_THRESHOLD","SCROLL_SPEED","autoScrollTimer","savedUserSelect","getActiveConfig","mode","toValue","shouldEnable","syncListenerState","attachContainerListener","cancelDrag","detachContainerListener","isBlankArea","mainArea","closest","config","itemEl","itemSelector","container","containerRef","contains","interactive","hasAppendModifier","shiftKey","ctrlKey","metaKey","saveSnapshot","currentItems","lastClientY","startAutoScroll","scrollStep","viewportHeight","innerHeight","scrollDelta","scrollBy","updateSelection","requestAnimationFrame","stopAutoScroll","cancelAnimationFrame","disableTextSelection","userSelect","restoreTextSelection","rect","selRect","itemElements","querySelectorAll","itemRect","getBoundingClientRect","itemBounds","intersects","onMouseDown","button","clientX","clientY","onMouseMove","onMouseUp","currentPoint","_event","onWindowResize","onMounted","onBeforeUnmount","mixins","backgroundManager","directFileCount","directFolderCount","showLogoutButton","tableData","searchKeywords","searchIncludeTags","searchExcludeTags","sortOption","isUploading","activeUrlTab","mobileActionIndex","longPressTimer","moveFileKey","moveFileIndex","pageSwipeStartX","pageSwipeStartY","pageSwipeStartTime","DashboardTabs","TagManagementDialog","BatchTagDialog","SkeletonLoader","FileCard","FolderCard","FileListItem","FileDetailDialog","BatchActionBar","MobileActionSheet","MobileDirectoryDrawer","FilterDropdown","MoveFileDialog","LanguageSwitcher","setup","cardContainerRef","listContainerRef","viewModeRef","itemsRef","card","list","totalPages","sortedData","sortData","end","fullList","concat","detailDialogWidth","ExternalLink","rootUrl","tableColumnNum","tablePreviewSpan","some","userConfig","urlPrefix","location","origin","newData","newOption","newFormat","$store","commit","parentPath","colors","formatFileSize","bytes","isNaN","units","searchText","excludeTagRegex","replace","match","includeTagRegex","log","extractChannelNames","typeLabels","telegram","cfr2","s3","discord","huggingface","webdav","entries","channelList","a","b","localeCompare","link","createElement","href","download","click","tab","$message","$confirm","reject","updateStats","find","handleBatchDelete","promises","results","successNum","handleBatchCopy","folders","$loading","lock","allFiles","links","generateFileLink","copyToClipboardFallback","textarea","appendChild","clip","execCommand","removeChild","fetchFileList","num","init","videoElement","fetch","credentials","authType","finally","$router","handleBatchDownload","handleBatchMove","handleBatchTagManagement","handleBatchBlock","handleBatchWhite","validation","executeBatchMove","executeSingleMove","newKey","tempData","refreshLocalFileList","f","resolve","zip","fileNameCount","downloadPromises","async","blob","extension","lastIndexOf","baseName","generateAsync","URL","createObjectURL","flag","videoExtensions","audioExtensions","imageExtensions","filename","page","isMobileViewport","updateResponsivePageSize","nextPageSize","firstVisibleIndex","floor","isSwipeIgnoredTarget","touch","touches","now","changedTouches","deltaX","deltaY","elapsed","targetPage","goToSwipePage","loadMoreDataUntilPage","parseInt","max","targetIndex","currentFolderCount","currentFileCount","neededFileCount","relativePath","maxLength","startLength","endLength","getFileNameStart","dotIndex","keepLength","getFileNameEnd","ext","folderPath","Set","folderItems","from","fileItems","totalCount","state","adminLoggedIn","updatedMetadata","isExternal","baseUrl","initializeBackground","adminUrlSettings","savedViewMode","module","exports","s","o","h","u","r","l","n","code","call","d","c","p","encode","getTypeOf","charCodeAt","charAt","decode","substr","uint8array","Uint8Array","compressedSize","uncompressedSize","crc32","compression","compressedContent","prototype","getContentWorker","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","createFolders","date","compressionOptions","comment","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","level","onData","pako","A","fromCharCode","O","utf8encode","I","m","g","v","w","k","S","z","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","shift","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","resume","registerPrevious","generatedError","generateWorker","platform","_compressWorker","arguments","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","toUpperCase","toString","remove","generate","generateInternalStream","mimeType","checkSupport","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","skip","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","apply","_worker","objectMode","array","string","arraybuffer","ArrayBuffer","nodebuffer","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","buffer","byteLength","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","id","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_data","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","createTextNode","observe","characterData","MessageChannel","onreadystatechange","parentNode","documentElement","port1","onmessage","port2","postMessage","TypeError","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","race","assign","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","j","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","flags","check","wbits","offset","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","J","getPrototypeOf","process","nextTick","importScripts","random","attachEvent","Function","callback","clearImmediate","validateFolderPath","strict","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/957.e8a16dfc.js.map.gz b/frontend-dist/js/957.e8a16dfc.js.map.gz deleted file mode 100644 index 2952cd4a..00000000 Binary files a/frontend-dist/js/957.e8a16dfc.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/967.4c8a2786.js.gz b/frontend-dist/js/967.4c8a2786.js.gz deleted file mode 100644 index dc8dd31b..00000000 Binary files a/frontend-dist/js/967.4c8a2786.js.gz and /dev/null differ diff --git a/frontend-dist/js/967.4c8a2786.js.map b/frontend-dist/js/967.4c8a2786.js.map deleted file mode 100644 index 1f5b2ee7..00000000 --- a/frontend-dist/js/967.4c8a2786.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/967.4c8a2786.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?30c5","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 如果全局壁纸开关关闭,直接清理背景并返回\n if (this.userConfig?.wallpaperEnabled === false) {\n this.clearBackgroundImages(true);\n return;\n }\n\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=59d53856&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=59d53856&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-59d53856\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/967.4c8a2786.js.map.gz b/frontend-dist/js/967.4c8a2786.js.map.gz deleted file mode 100644 index 9418427d..00000000 Binary files a/frontend-dist/js/967.4c8a2786.js.map.gz and /dev/null differ diff --git a/frontend-dist/js/967.4c8a2786.js b/frontend-dist/js/967.db104add.js similarity index 99% rename from frontend-dist/js/967.4c8a2786.js rename to frontend-dist/js/967.db104add.js index 17b7124c..80ab2368 100644 --- a/frontend-dist/js/967.4c8a2786.js +++ b/frontend-dist/js/967.db104add.js @@ -1,2 +1,2 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[967],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):a&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,r=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const r=this.userConfig?.[e];if(!n||void 0!==r)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},84967:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const r={class:"not-found-container"},o=["innerHTML"],i={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",i,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},I=a(71241);const v=(0,I.A)(f,[["render",k],["__scopeId","data-v-59d53856"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=967.4c8a2786.js.map \ No newline at end of file +"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[967],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.de27f549.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\n transform: scale(1);\n transform-origin: center center;\n will-change: opacity, transform;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(!1===this.userConfig?.wallpaperEnabled)return void this.clearBackgroundImages(!0);this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const r=document.getElementById("bg1"),o=document.getElementById("bg2");if(!r||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const i=this.userConfig?.[e];"bing"===i?this.setupBingWallpaper(r,o,t):Array.isArray(i)&&i.length>1?this.setupCustomWallpaperCarousel(r,o,i,t):Array.isArray(i)&&1===i.length?this.setupSingleCustomWallpaper(r,i[0],t):a&&this.setupDefaultWallpaper(r,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a,!0),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n,!0),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a,n=!1){e.style.zIndex=-1,e.style.opacity=0,this.prepareBackgroundMotion(e,n);const s=document.querySelector(a);this.prepareBackgroundContainer(s);const r=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity,n&&(e.style.transform="scale(1.045)")})})},o=new Image;o.onload=()=>{e.src=t,r()},o.onerror=()=>{e.src=t,r()},o.src=t},prepareBackgroundMotion(e,t=!1){if(!e)return;const a=Math.max(this.bkInterval+1200,4200);e.style.transition=t?`opacity 1.2s ease-in-out, filter 0.3s ease, transform ${a}ms ease-out`:"opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease",e.style.transformOrigin="center center",e.style.transform="scale(1)"},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const r=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1,this.prepareBackgroundMotion(s,!0);const o=new Image;o.onload=()=>{s.src=r,setTimeout(()=>{s.style.opacity=this.bkOpacity,s.style.transform="scale(1.045)",setTimeout(()=>{n.style.opacity=0,this.prepareBackgroundMotion(n,!0)},1200)},50)},o.src=r},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,r=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,r.style.zIndex=-1,this.prepareBackgroundMotion(r,!0);const i=new Image;i.onload=()=>{r.src=o,setTimeout(()=>{r.style.opacity=this.bkOpacity,r.style.transform="scale(1.045)",setTimeout(()=>{s.style.opacity=0,this.prepareBackgroundMotion(s,!0)},1200)},50)},i.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const r=this.userConfig?.[e];if(!n||void 0!==r)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:i,c=0!=o.style.opacity?i:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},84967:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const r={class:"not-found-container"},o=["innerHTML"],i={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,s.g2)("font-awesome-icon"),I=n.S2;return(0,s.uX)(),(0,s.CE)("div",r,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",i,[(0,s.Lk)("div",l,[(0,s.bF)(I,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(I,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(I,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},I=a(71241);const v=(0,I.A)(f,[["render",k],["__scopeId","data-v-59d53856"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); +//# sourceMappingURL=967.db104add.js.map \ No newline at end of file diff --git a/frontend-dist/js/967.db104add.js.gz b/frontend-dist/js/967.db104add.js.gz new file mode 100644 index 00000000..779dd2b6 Binary files /dev/null and b/frontend-dist/js/967.db104add.js.gz differ diff --git a/frontend-dist/js/967.db104add.js.map b/frontend-dist/js/967.db104add.js.map new file mode 100644 index 00000000..501c7c0e --- /dev/null +++ b/frontend-dist/js/967.db104add.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/967.db104add.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/views/NotFound.vue?30c5","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease, transform 4.2s ease-out;\r\n transform: scale(1);\r\n transform-origin: center center;\r\n will-change: opacity, transform;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 如果全局壁纸开关关闭,直接清理背景并返回\r\n if (this.userConfig?.wallpaperEnabled === false) {\r\n this.clearBackgroundImages(true);\r\n return;\r\n }\r\n\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector, true)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector, enableZoom = false) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n this.prepareBackgroundMotion(imgElement, enableZoom)\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n if (enableZoom) {\r\n imgElement.style.transform = 'scale(1.045)'\r\n }\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n\r\n prepareBackgroundMotion(imgElement, enableZoom = false) {\r\n if (!imgElement) return\r\n\r\n const zoomDuration = Math.max(this.bkInterval + 1200, 4200)\r\n imgElement.style.transition = enableZoom\r\n ? `opacity 1.2s ease-in-out, filter 0.3s ease, transform ${zoomDuration}ms ease-out`\r\n : 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n imgElement.style.transformOrigin = 'center center'\r\n imgElement.style.transform = 'scale(1)'\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n this.prepareBackgroundMotion(nextBg, true)\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n nextBg.style.transform = 'scale(1.045)'\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n this.prepareBackgroundMotion(curBg, true)\r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out, filter 0.3s ease, transform 0.3s ease'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=59d53856&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=59d53856&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-59d53856\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","wallpaperEnabled","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","enableZoom","zIndex","opacity","prepareBackgroundMotion","showImage","requestAnimationFrame","transform","preload","Image","onload","src","onerror","zoomDuration","Math","max","transition","transformOrigin","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/967.db104add.js.map.gz b/frontend-dist/js/967.db104add.js.map.gz new file mode 100644 index 00000000..1efd0466 Binary files /dev/null and b/frontend-dist/js/967.db104add.js.map.gz differ diff --git a/frontend-dist/js/app.e9233b6a.js b/frontend-dist/js/app.08a5e390.js similarity index 98% rename from frontend-dist/js/app.e9233b6a.js rename to frontend-dist/js/app.08a5e390.js index 9c8aa347..3065108a 100644 --- a/frontend-dist/js/app.e9233b6a.js +++ b/frontend-dist/js/app.08a5e390.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={457:function(e,a,t){var o=t(94373);const n=o.A.create({baseURL:"/",withCredentials:!0});a.A=n},16915:function(e,a,t){var o=t(48512),n=t(51219),l=t(25507),i=t(457),r=t(46638);const s=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(385),t.e(451),t.e(870)]).then(t.bind(t,26870)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(21),t.e(283),t.e(679)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(451),t.e(957)]).then(t.bind(t,35177)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(449)]).then(t.bind(t,75449)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(888)]).then(t.bind(t,29888)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(21),t.e(283),t.e(227)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(331).then(t.bind(t,16331))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(278).then(t.bind(t,18278))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(412).then(t.bind(t,4412))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(967).then(t.bind(t,84967))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,l.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return c},xS:function(){return d}});var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

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

示例:wallpaper,photos,album

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

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

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

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

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

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),G=t(10798),_=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),Ge=t(97447),_e=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,G.A,_.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,Ge.Jm,_e.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{21:"e06c66b8",22:"f752503c",227:"44709224",278:"66af4a0a",283:"5d4f325d",331:"0b44b778",412:"2eefa4a8",449:"865896d4",679:"23bb4457",870:"9e7db652",888:"f7235188",957:"e8a16dfc",967:"4c8a2786"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{227:"e7484000",278:"e44cbf52",322:"2b40f004",331:"dd13d5f5",385:"20c34d33",412:"ba63fb59",449:"0a847317",451:"7e03bef9",679:"e7484000",870:"16cbea0a",888:"793f4b66",957:"db5680df",967:"3f3c6dac"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;c{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.adminRequired)return l.A.commit("setAdminLoggedIn",!0),t();if(o.valid&&"admin"===o.authType)return l.A.commit("setAdminLoggedIn",!0),t();const i=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()}).catch(()=>{const a=l.A.state.adminLoggedIn;l.A.commit("setAdminLoggedIn",!1),"adminLogin"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"adminLogin"})):t()})},d=(e,a,t)=>{i.A.get("/api/auth/sessionCheck",{withCredentials:!0}).then(a=>{const o=a.data||{};if(!o.userRequired)return l.A.commit("setUserLoggedIn",!0),t();if(o.valid)return l.A.commit("setUserLoggedIn",!0),t();const i=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(i&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()}).catch(()=>{const a=l.A.state.userLoggedIn;l.A.commit("setUserLoggedIn",!1),"login"!==e.name?(a&&n.nk.error(r.Ay.global.t("login.authRequired")),t({name:"login"})):t()})},c=[{path:"/",name:"home",component:()=>Promise.all([t.e(385),t.e(451),t.e(148)]).then(t.bind(t,50148)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(21),t.e(283),t.e(679)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(451),t.e(903)]).then(t.bind(t,47515)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(449)]).then(t.bind(t,75449)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(21),t.e(385),t.e(22),t.e(322),t.e(888)]).then(t.bind(t,29888)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(21),t.e(283),t.e(227)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>t.e(331).then(t.bind(t,16331))},{path:"/whiteliston",name:"whiteliston",component:()=>t.e(278).then(t.bind(t,18278))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(412).then(t.bind(t,4412))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>t.e(967).then(t.bind(t,84967))}],u=(0,o.aE)({history:(0,o.LA)("/"),routes:c});a.A=u},25507:function(e,a,t){t(18111),t(61701);var o=t(60782),n=t(457),l=t(55131);a.A=(0,o.y$)({state:{userConfig:null,bingWallPapers:[],adminLoggedIn:!1,userLoggedIn:!1,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,adminLoggedIn:e=>e.adminLoggedIn,userLoggedIn:e=>e.userLoggedIn,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,a){e.userConfig=a},setBingWallPapers(e,a){e.bingWallPapers=a},setAdminLoggedIn(e,a){e.adminLoggedIn=a},setUserLoggedIn(e,a){e.userLoggedIn=a},setUploadMethod(e,a){e.uploadMethod=a},setUploadCopyUrlForm(e,a){e.uploadCopyUrlForm=a},setCompressConfig(e,{key:a,value:t}){e.compressConfig[a]=t},setStoreUploadChannel(e,a){e.storeUploadChannel=a},setStoreChannelName(e,a){e.storeChannelName=a},setStoreUploadNameType(e,a){e.storeUploadNameType=a},setCustomUrlSettings(e,{key:a,value:t}){e.customUrlSettings[a]=t},setStoreAutoRetry(e,a){e.storeAutoRetry=a},setAdminUrlSettings(e,{key:a,value:t}){e.adminUrlSettings[a]=t},setUseDarkMode(e,a){e.useDarkMode=a},setCusDarkMode(e,a){e.cusDarkMode=a},setStoreUploadFolder(e,a){e.uploadFolder=a,localStorage.setItem("uploadFolder",a)},setStoreAutoReUpload(e,a){e.autoReUpload=a}},actions:{async fetchUserConfig({commit:e}){try{const a=await n.A.get("/api/userConfig");e("setUserConfig",a.data)}catch(a){console.log(a)}},async fetchBingWallPapers({commit:e}){try{const a=await n.A.get("/api/bing/wallpaper"),t=a.data.data,o=t.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(o.map(e=>new Promise((a,t)=>{const o=new Image;o.onload=a,o.onerror=t,o.src=e.url}))),e("setBingWallPapers",o)}catch(a){console.log(a)}}},modules:{},plugins:[(0,l.A)({paths:["userConfig","uploadMethod","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode"]})]})},46638:function(e,a,t){t.d(a,{Ay:function(){return c},xS:function(){return d}});var o=t(85384),n=JSON.parse('{"login":{"title":"登录到 {owner} 图床","adminTitle":"管理端登录","password":"密码","username":"用户名","passwordPlaceholder":"请输入认证码","usernamePlaceholder":"请输入用户名","adminPasswordPlaceholder":"请输入密码","submit":"登录","success":"登录成功","failed":"登录失败,请检查密码是否正确","adminFailed":"用户名或密码错误","serverError":"服务器错误","systemError":"系统错误","authRequired":"请先认证!","authFailed":"认证失败!"},"upload":{"folderPlaceholder":"上传目录","pasteUpload":"粘贴上传","fileUpload":"文件上传","dragUploadText":"拖拽 点击Ctrl + V 粘贴上传","pasteUrlPlaceholder":"粘贴外链上传,多个外链用换行分隔","pasteUploadBtn":"上 传","pasteSave":"转存","pasteExternal":"外链","history":"上传记录","announcement":"查看公告","noAnnouncement":"暂无公告","announcementTitle":"公告","announcementAck":"我已知晓!","settings":"上传设置","linkFormat":"链接格式","manage":"系统管理","logout":"退出登录","logoutSuccess":"已退出登录","viewDocs":"查看文档","switchUploadMethod":"切换上传方式","copyAll":"整体复制","retryFailed":"失败重试","clearList":"清空列表","clearAll":"清空全部","clearUploaded":"清空已上传"},"uploadForm":{"deleted":"{name}已删除","uploadSuccess":"{name}上传成功","uploadFailed":"{name}上传失败","compressFailedCannotUpload":"{name}压缩失败,无法上传!","fileTooLarge":"{name}文件过大,无法上传!","compressedFileTooLarge":"{name}压缩后文件过大,无法上传!","copySuccess":"复制成功","copyFailed":"复制失败","copyAllSuccess":"整体复制成功","fileNotUploaded":"文件未上传成功,无法复制链接","fileListCleared":"文件列表已清空","fileListEmpty":"文件列表为空","successFilesCleared":"成功上传文件已清空","successFilesEmpty":"成功上传文件为空","noFailedFiles":"无上传失败文件","autoRetryOn":"自动重试已开启","autoRetryOff":"自动重试已关闭","autoRetry":"自动重试","maxRetryReached":"{name} 已达到最大重试次数({max}),停止重试","urlRequestFailed":"粘贴板中的URL地址请求失败","chunkMerging":"分块上传完成,正在合并文件,请耐心等待...","fileSizeTooLarge":"文件过大","chunkInitFailed":"初始化分块上传失败","uploadError":"上传过程中发生错误","imageLoadFailed":"图片加载失败"},"uploadSettings":{"title":"上传设置","uploadChannel":"上传渠道","channelType":"渠道类型","channelName":"渠道名称","channelNameTooltip":"选择具体的渠道名称,不选择则使用负载均衡或默认渠道","autoSelect":"自动选择","uploadDirectory":"上传目录","uploadDirectoryPlaceholder":"请输入上传目录路径","autoSwitch":"自动切换","autoSwitchTooltip":"对于非分块上传文件,上传失败自动切换到其他渠道上传","fileNaming":"文件命名方式","namingDefault":"默认","namingIndex":"仅前缀","namingOrigin":"仅原名","namingShort":"短链接","filePreprocess":"文件预处理","filePreprocessTooltip":"上传前在本地进行格式转换和压缩,仅对图片文件生效","convertToWebp":"转换为WebP","convertToWebpTooltip":"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传","fileCompress":"文件压缩","compressThreshold":"压缩阈值","compressThresholdTooltip":"设置图片大小阈值,超过此值将自动压缩,单位MB","expectedSize":"期望大小","expectedSizeTooltip":"设置压缩后图片大小期望值,单位MB","serverCompress":"服务端压缩","serverCompressTooltip":"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题","enableCompress":"开启压缩","confirm":"确定"},"uploadHistory":{"title":"历史记录","totalRecords":"共 {count} 条","switchView":"切换视图","clearRecords":"清空记录","loading":"加载中...","pullToLoadMore":"下拉加载更多","noMoreRecords":"没有更多记录了","emptyHistory":"暂无上传记录","linkCopied":"链接已复制","copyFailed":"复制失败","clearConfirmTitle":"提示","clearConfirmMessage":"确定要清空所有上传记录吗?","clearConfirmOk":"确定","clearConfirmCancel":"取消","recordsCleared":"记录已清空","deleteConfirmMessage":"确定要删除这条记录吗?","recordDeleted":"记录已删除"},"settings":{"linkFormatTitle":"链接格式设置","defaultCopyLink":"默认复制链接","rawLink":"原始链接","customLink":"自定义链接","customLinkTooltip":"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入","enableCustom":"启用自定义","customPrefix":"自定义前缀","customPrefixPlaceholder":"请输入自定义链接前缀","confirm":"确定","s3Link":"S3链接"},"dashboard":{"searchPlaceholder":"搜索:#标签 -#排除标签","sortByDateDesc":"按时间倒序","sortByNameAsc":"按名称升序","selectedItems":"项已选","clearSelection":"清除选择","copy":"复制","delete":"删除","download":"下载","move":"移动","tagManagement":"标签管理","addToBlacklist":"加入黑名单","addToWhitelist":"加入白名单","linkFormat":"链接格式","listView":"列表视图","cardView":"卡片视图","logout":"退出登录","rootDirectory":"根目录","totalFiles":"共 {count} 个文件","noMatchingFiles":"未找到匹配的文件或文件夹","currentDirEmpty":"当前目录为空","adjustSearchHint":"尝试调整搜索条件或筛选器","uploadHint":"上传文件后将显示在这里","loadMore":"加载更多","totalPages":"共 {count} 页","jumpTo":"跳至","preview":"预览","fileName":"文件名","tags":"标签","channelType":"渠道类型","channelNameCol":"渠道名称","uploadAddress":"上传地址","fileSize":"大小","uploadTime":"上传时间","actions":"操作","externalTag":"外链","unknownTag":"未知","detail":"详情","copyLink":"复制链接","moveFile":"移动","downloadFile":"下载","loadFailed":"加载失败","copySuccess":"复制成功","copyFailed":"复制失败","deleteConfirm":"此操作将永久删除该文件, 是否继续?","deleteConfirmTitle":"提示","deleteConfirmOk":"确定","deleteConfirmCancel":"取消","deleteSuccess":"删除成功","deleteFailed":"删除失败","blockConfirm":"此操作将把该文件加入黑名单, 是否继续?","blockSuccess":"加入黑名单成功","blockFailed":"加入黑名单失败","whiteConfirm":"此操作将把该文件加入白名单, 是否继续?","whiteSuccess":"加入白名单成功","whiteFailed":"加入白名单失败","deleteFolderConfirm":"此操作将永久删除文件夹, 是否继续?","deleteFileConfirm":"此操作将永久删除该文件, 是否继续?","batchDeleteConfirm":"此操作将永久删除选中的文件及文件夹, 是否继续?","batchDeleteSuccess":"批量删除成功","batchDeleteFailed":"批量删除失败","batchBlockConfirm":"此操作将把选中的文件加入黑名单, 是否继续?","batchBlockSuccess":"批量加入黑名单成功","batchBlockFailed":"批量加入黑名单失败","batchWhiteConfirm":"此操作将把选中的文件加入白名单, 是否继续?","batchWhiteSuccess":"批量加入白名单成功","batchWhiteFailed":"批量加入白名单失败","noLinksAvailable":"没有可复制的链接","batchCopySuccess":"批量复制 {count} 个链接成功","batchCopyFailed":"批量复制链接失败,请重试","batchCopyLinksSuccess":"批量复制链接成功","copyFileLinkSuccess":"复制文件链接成功","fileListMemoryCacheWarning":"文件列表较大,已切换为内存缓存;刷新页面后需要重新加载列表。","indexingWarning":"索引构建中,当前搜索和排序结果可能不准确,请稍后再试。","loadMoreFailed":"加载更多文件失败,请检查网络连接","moveSuccess":"移动成功","moveFailed":"移动失败","moveTargetSameAsCurrent":"目标文件夹不能是当前文件夹","invalidPageNumber":"请输入有效的页码","pageExceedsMax":"页码不能超过 {max}","loadingData":"正在加载数据,请稍候...","loadDataFailed":"加载数据失败,请检查网络连接","fetchFileListFailed":"获取文件列表失败","refreshFailed":"刷新失败,请重试","selectFilesFirst":"请先选择文件","syncDataError":"同步数据时出错,请检查网络连接","fetchingFileList":"正在获取文件列表...","folderEmptyNoLinks":"文件夹为空,没有可复制的链接","copiedFileLinks":"已复制 {count} 个文件链接","copyFolderLinksFailed":"复制文件夹链接失败,请重试"},"dashboardTabs":{"fileManagement":"文件管理","userManagement":"用户管理","systemSettings":"系统设置","fileUpload":"文件上传"},"fileDetail":{"title":"文件详情","download":"下载","tags":"标签","blacklist":"黑名单","whitelist":"白名单","deleteBtn":"删除","edit":"编辑","rename":"重命名","save":"保存","cancel":"取消","originUrl":"原始链接","fileNameLabel":"文件名","fileNamePlaceholder":"请输入文件名","fileType":"文件类型","fileTypePlaceholder":"如 image/jpeg","fileSizeLabel":"文件大小","imageDimensions":"图片尺寸","noDimensions":"无","uploadTimeLabel":"上传时间","channelTypeAndName":"渠道类型/名称","accessStatusAndReview":"访问状态/审查","uploadIP":"上传IP","uploadAddressLabel":"上传地址","fileTags":"文件标签","noTags":"暂无标签","unknown":"未知","accessNormal":"正常","accessNormalWhitelist":"正常(白名单)","accessBlockedBlacklist":"已屏蔽(黑名单)","accessBlockedReview":"已屏蔽(审查不通过)","orientationLandscape":"横","orientationPortrait":"竖","orientationSquare":"方","linkCopied":"链接已复制","metadataSaved":"元数据保存成功","metadataSaveFailed":"保存元数据失败","renameTitle":"重命名 File ID","renameLabel":"新 File ID","renamePlaceholder":"请输入新的 File ID","renameCancel":"取消","renameConfirm":"确认重命名","renameSuccess":"文件重命名成功","renameConflict":"目标文件名已存在","renameFailed":"重命名失败"},"filter":{"accessStatus":"访问状态","normal":"正常","blocked":"已屏蔽","blackWhiteList":"黑白名单","whiteList":"白名单","blackList":"黑名单","notSet":"未设置","reviewResult":"审查结果","teenContent":"12+内容","adultContent":"成人内容","fileType":"文件类型","image":"图片","video":"视频","audio":"音频","other":"其他","channelType":"渠道类型","externalLink":"外链","channelName":"渠道名称","clearFilters":"清除筛选"},"moveFile":{"title":"移动文件","batchTitle":"批量移动文件","targetDirectory":"目标目录","targetPlaceholder":"请输入目标目录路径","hint":"提示:路径以 / 开头表示根目录,如 /photos/2024/","hintMobile":"提示:路径以 / 开头表示根目录","selectDirectory":"选择目录","cancel":"取消","confirm":"确定","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadTreeFailed":"加载目录树失败,请检查网络连接"},"batchTag":{"title":"批量标签管理","addTab":"添加","removeTab":"移除","clearTab":"清空","addDescription":"为选中的 {count} 个文件添加标签","inputPlaceholder":"输入标签名称","pendingTags":"待添加的标签","noPendingTags":"暂无待添加标签","addToAllFiles":"添加到所有文件","removeDescription":"移除选中文件的共有标签","commonTags":"共有标签","noCommonTags":"选中的文件没有共有标签","clearDescription":"清空选中的 {count} 个文件的所有标签","clearWarningTitle":"⚠️警告","clearWarningDesc":"此操作将清空所有选中文件的标签,且不可恢复","confirmClearAll":"确认清空所有标签","tagAlreadyInList":"标签已在列表中","pleaseAddTags":"请先添加要批量添加的标签","addSuccess":"成功为 {count} 个文件添加标签","addFailed":"批量添加标签失败","removeSuccess":"成功从 {count} 个文件中移除标签","removeFailed":"移除标签失败","clearConfirmMessage":"确定要清空选中的 {count} 个文件的所有标签吗?此操作不可恢复。","clearConfirmTitle":"确认清空","clearConfirmOk":"确定","clearConfirmCancel":"取消","clearCancelled":"已取消清空操作","clearSuccess":"成功清空 {count} 个文件的标签","clearFailed":"清空标签失败","loadCommonTagsFailed":"加载共有标签失败"},"tagManagement":{"title":"标签管理","inputPlaceholder":"输入标签名称","currentTags":"当前标签","noTags":"暂无标签","popularTags":"常用标签","loading":"加载中...","noPopularTags":"暂无常用标签","close":"关闭","tagExists":"标签已存在","addSuccess":"标签添加成功","addFailed":"添加标签失败","removeSuccess":"标签删除成功","removeFailed":"删除标签失败","loadFailed":"加载标签失败"},"mobileAction":{"viewDetail":"查看详情","copyLink":"复制链接","downloadFile":"下载文件","moveFile":"移动文件","tagManagement":"标签管理","moveFolder":"移动文件夹","deleteFile":"删除文件","deleteFolder":"删除文件夹"},"mobileDirectory":{"title":"目录导航","rootDirectory":"根目录","goBack":"返回上一级"},"sysConfig":{"logout":"退出登录"},"sysConfigTabs":{"systemStatus":"系统状态","uploadSettings":"上传设置","securitySettings":"安全设置","pageSettings":"网页设置","otherSettings":"其他设置"},"dateRangeCalendar":{"previousMonth":"上个月","nextMonth":"下个月","startDate":"起始日期","endDate":"结束日期","rangeSeparator":"至","monthTitle":"{year}-{month}","weekdaySun":"日","weekdayMon":"一","weekdayTue":"二","weekdayWed":"三","weekdayThu":"四","weekdayFri":"五","weekdaySat":"六"},"sysStatus":{"totalFiles":"文件总数","clickToRefresh":"点击刷新","indexUpdateTime":"索引更新时间","systemVersion":"系统版本","clickToViewChangelog":"点击查看更新日志","channelDistribution":"上传渠道分布","fileStatusDistribution":"文件状态分布","uploadTrend":"上传趋势","uploadTrendGroupBy":"上传趋势分组方式","totalUploads":"上传总数","byChannelType":"渠道类型","byChannelName":"渠道名称","selectDateRange":"选择日期范围","otherChannels":"其他","uploadsUnit":"次","noData":"暂无数据","totalFilesLabel":"文件总数","statusTypes":"状态类型","systemMaintenance":"系统维护","rebuildIndex":"重建索引","rebuilding":"重建中...","rebuildTooltip":"重新扫描所有文件并更新索引数据,适用于数据不一致时的修复","backupData":"备份数据","backingUp":"备份中...","backupTooltip":"备份所有文件元数据和系统设置到JSON文件","restoreData":"恢复数据","restoring":"恢复中...","restoreTooltip":"从备份文件恢复数据,将覆盖现有的文件元数据和系统设置","cancelOperation":"取消操作","retry":"重试","close":"关闭","records":"条记录","aboutToComplete":"即将完成","seconds":"约 {count} 秒","minutes":"约 {count} 分钟","hoursMinutes":"约 {hours} 小时 {minutes} 分钟","phaseFetching":"正在获取数据","phaseSorting":"正在排序","phaseUploading":"正在上传","phaseFinalizing":"正在完成","phaseBuilding":"正在构建备份","phaseDownloading":"正在生成下载","phaseRestoringFiles":"正在恢复文件","phaseRestoringSettings":"正在恢复设置","phaseCompleted":"已完成","phaseRetrying":"正在重试","rebuildSuccess":"索引重建完成!共处理 {count} 个文件","backupSuccess":"备份完成!共备份 {count} 个文件","backupSuccessWithSettings":"备份完成!共备份 {fileCount} 个文件,{settingsCount} 个设置项","operationInProgress":"已有操作正在进行中","selectJsonFile":"请选择JSON格式的备份文件","restoreConfirmMessage":"恢复操作将覆盖现有的文件元数据和系统设置,此操作不可逆。确定要继续吗?","restoreConfirmTitle":"确认恢复","restoreConfirmOk":"确定恢复","restoreConfirmCancel":"取消","invalidBackupFile":"备份文件格式无效,请选择有效的 JSON 文件","restoreSuccess":"恢复完成!已恢复 {files} 个文件和 {settings} 个设置项,正在重建索引...","restoreFailed":"恢复数据失败","fetchIndexFailed":"获取索引信息失败","unknown":"未知","blocked":"已屏蔽","normalStatus":"正常","latestUpload":"最近上传","earliestUpload":"最早上传","daysAgo":"{count}天前","hoursAgo":"{count}小时前","minutesAgo":"{count}分钟前","justNow":"刚刚","cancellingRebuild":"正在取消索引重建..."},"sysUpload":{"title":"上传渠道管理","titleTooltip":"管理所有上传渠道的配置,点击卡片查看详情或编辑","filterPlaceholder":"筛选渠道类型","addChannel":"添加渠道","loadBalance":"负载均衡","unnamedChannel":"未命名渠道","envVariable":"环境变量","noChannels":"暂无 {type} 渠道","detail":"详情","editBtn":"编辑","deleteBtn":"删除","addDialogTitle":"添加新渠道","channelTypeLabel":"渠道类型","channelTypePlaceholder":"请选择渠道类型","channelNameLabel":"渠道名称","channelNamePlaceholder":"请输入渠道名称","channelNameImmutableTip":"添加后将作为文件关联渠道的唯一标识,不支持修改","channelNameEditDisabledTip":"渠道名称用于关联已上传文件,不支持修改","botTokenLabel":"Bot Token","botTokenPlaceholder":"请输入 Bot Token","chatIdLabel":"Chat ID","chatIdPlaceholder":"请输入 Chat ID","proxyDomain":"代理域名","proxyDomainPlaceholder":"可选,例如: your-proxy.example.com","endpointLabel":"Endpoint","endpointPlaceholder":"例如: https://s3.us-east-005.backblazeb2.com","cdnDomain":"CDN 域名","cdnDomainPlaceholder":"可选,请填写完整 CDN 访问地址前缀,例如:https://cdn.example.com","cdnDomainTip":"可选配置。可用于生成和展示文件访问链接,服务端读取文件内容时也会优先尝试通过 CDN 读取。","bucketName":"存储桶名称","bucketNamePlaceholder":"请输入存储桶名称","bucketRegion":"存储桶区域","bucketRegionPlaceholder":"默认填写 auto","accessKeyId":"访问密钥 ID","accessKeyIdPlaceholder":"请输入访问密钥 ID","secretAccessKey":"机密访问密钥","secretAccessKeyPlaceholder":"请输入机密访问密钥","pathStyle":"路径风格","pathStyleTip":"使用 OpenList 等不兼容主机风格服务时需开启","quotaLimit":"容量限制","quotaLimitGB":"容量上限 (GB)","quotaThreshold":"停用阈值 (%)","channelIdLabel":"Channel ID","channelIdPlaceholder":"请输入 Channel ID","nitroMember":"Nitro 会员","nitroTip":"会员单文件限制 25MB,否则为 10MB","discordWarning":"Discord 有接口频率限制,不建议将其用作大规模并发场景","repoName":"仓库名","repoNamePlaceholder":"格式: username/repo-name","accessToken":"Access Token","accessTokenPlaceholder":"请输入 Access Token","privateRepo":"私有仓库","privateRepoTip":"私有仓库限制 100GB","webdavBaseUrl":"WebDAV 基础地址","webdavBaseUrlPlaceholder":"例如: https://dav.example.com/remote.php/dav/files/user/imgbed/","webdavUsername":"用户名","webdavUsernamePlaceholder":"可选用户名","webdavPassword":"密码","webdavPasswordPlaceholder":"可选密码","webdavPublicUrlPlaceholder":"可选,请填写完整公开访问地址前缀,例如:https://cdn.example.com/imgbed","webdavPublicUrlTip":"可选配置。服务端读取文件内容时会优先尝试通过该公开地址读取,失败后回退 WebDAV API。","webdavHeaders":"自定义请求头","webdavHeadersPlaceholder":"可选 JSON 对象,例如: {\'{\\"X-Api-Key\\":\\"value\\"}\'}","webdavHeadersInvalid":"自定义请求头必须是有效的 JSON 对象","webdavCreateDirectory":"自动创建目录","webdavCreateDirectoryTip":"上传文件前自动创建父级目录","cancel":"取消","confirmAdd":"确认添加","detailDialogTitle":"渠道详情 - {name}","channelNameDetail":"渠道名称","channelTypeDetail":"渠道类型","statusLabel":"状态","enabled":"已启用","disabled":"已禁用","configSource":"配置来源","publicUrl":"公开访问链接","notSet":"未设置","isPathStyle":"是","isNotPathStyle":"否","currentUsage":"当前用量","closeBtn":"关闭","editDialogTitle":"编辑渠道 - {name}","enableChannel":"启用渠道","saveChanges":"保存修改","r2ConfigNote":"请按照 配置 R2 渠道 文档说明添加 R2 渠道","reservedName":"该名称为系统保留名称,请使用其他名称","duplicateName":"该类型下已存在同名渠道,请使用其他名称","fixedChannelCannotDelete":"环境变量配置的渠道无法删除","deleteChannelConfirm":"确定要删除该渠道吗?删除后,仍关联该渠道的文件可能无法访问。","quotaInitConfirm":"首次启用容量限制需要统计现有文件容量,这可能需要一些时间。是否立即统计?","quotaInitTitle":"初始化容量统计","quotaInitConfirmBtn":"立即统计","quotaInitCancelBtn":"稍后手动统计","quotaInitLater":"您可以稍后点击刷新按钮手动统计","quotaCalculating":"正在统计容量,请稍候...","quotaCalculateSuccess":"容量统计完成","quotaCalculateFailed":"统计失败","quotaCalculateError":"统计失败: "},"sysSecurity":{"authManagement":"认证管理","userAuth":"用户端认证","adminAuth":"管理端认证","uploadPassword":"上传密码","confirmPassword":"确认密码","adminUsername":"用户名","adminPassword":"密码","apiTokenManagement":"API Token 管理","imageReview":"图像审查","imageReviewTooltip":"仅对非分块上传文件生效,支持 nsfwjs 和 moderatecontent.com 渠道","enableReview":"开启审查","reviewChannel":"审查渠道","reviewChannelPlaceholder":"请选择审查渠道","apiKey":"API Key","apiPath":"API 路径","ipQuery":"IP 归属地查询","ipQueryTooltip":"上传时按配置调用自定义 API 查询上传 IP 归属地,参数值支持 {\'{ip}\'} 占位符","enableIpQuery":"开启查询","ipQueryChannel":"查询渠道","ipQueryChannelPlaceholder":"请选择查询渠道","customApi":"自定义 API","queryParams":"查询参数","paramNamePlaceholder":"参数名","paramValuePlaceholder":"参数值,如 {\'{ip}\'}","addQueryParam":"添加参数","responseFields":"响应字段","responseFieldsTip":"最终显示内容会按照字段顺序拼接","responseFieldPathPlaceholder":"JSON 路径,如 country.name","addResponseField":"添加字段","uploadManagement":"上传管理","accessManagement":"访问管理","domainFilter":"域名过滤","allowedDomains":"放行域名","allowedDomainsTooltip":"1.针对访问域名设置权限
2.留空默认全部放行,多个域名请用英文逗号分隔","whiteListMode":"白名单模式","enableWhiteList":"是否开启","enableWhiteListTooltip":"1.针对文件设置权限
2.开启后,仅被加入白名单的文件可被访问","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

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

示例:wallpaper,photos,album

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

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

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

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

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

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"theme":{"lightMode":"Light Mode","darkMode":"Dark Mode","autoMode":"Auto Mode"},"common":{"confirm":"OK","cancel":"Cancel","close":"Close","save":"Save","delete":"Delete","edit":"Edit","copy":"Copy","download":"Download","retry":"Retry","loading":"Loading...","success":"Success","failed":"Failed","warning":"Warning","info":"Notice","yes":"Yes","no":"No","all":"All Types","select":"Select"},"validation":{"pathMustStartWithSlash":"Path must start with \\"/\\"","pathTraversalNotAllowed":"Path cannot contain \\"..\\"","singleDotNotAllowed":"Path cannot contain standalone \\".\\"","consecutiveSlashNotAllowed":"Path cannot contain consecutive slashes","invalidCharacters":"Path contains invalid characters, please use a valid path format","uploadDirReplace":"Upload directory"},"language":{"switchTo":"中/En","switchLanguage":"Switch Language"},"whitelist":{"title":"Whitelist Mode Enabled","description":"Sorry, the whitelist mode is currently enabled. Uploaded images need to be approved before they can be displayed. Please wait for approval.","goHome":"Go Home","goBack":"Go Back","helpText":"You can try:","uploadImage":"Upload Image","refreshPage":"Refresh Page"}}');const i="app-locale";function r(){const e=localStorage.getItem(i);return"zh-CN"===e||"en"===e?e:"zh-CN"}const s=(0,o.hU)({legacy:!0,locale:r(),fallbackLocale:"zh-CN",messages:{"zh-CN":n,en:l}});function d(e){s.global.locale=e,localStorage.setItem(i,e),document.documentElement.lang="zh-CN"===e?"zh-CN":"en"}var c=s},81525:function(e,a,t){t(18111),t(7588);var o=t(45130),n=t(73888),l=t(18642),i=(t(15412),t(30372),t(98950)),r=t(30292),s=t(47984),d=t(79262),c=t(70193),u=t(55363),m=t(31050),p=t(22909),h=t(10220),g=t(74036),f=t(90389),y=t(81828),b=t(27483),C=t(66806),k=t(61536),T=t(3263),w=t(57038),v=t(63416),S=t(63027),P=t(19223),F=t(93422),A=t(16249),D=t(34335),L=t(14722),U=t(16829),N=t(53916),M=t(48749),I=t(2511),R=t(12375),x=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),V=t(18422),j=t(17214),H=t(44845),z=t(55319),K=t(71669),Q=t(38557),J=t(15925),G=t(10798),_=t(39329),Y=t(59708),X=t(41165),$=t(50230),Z=t(99288),ee=t(67992),ae=t(37538),te=t(13118),oe=t(36050),ne=t(69721),le=t(75192),ie=t(50672),re=t(3149),se=t(11221),de=t(73585),ce=t(63236),ue=t(1860),me=t(13110),pe=t(6246),he=t(42302),ge=t(75504),fe=t(40587),ye=t(5299),be=t(81775),Ce=t(13127),ke=t(18742),Te=t(97579),we=t(56746),ve=t(58422),Se=t(20444),Pe=t(88502),Fe=t(21872),Ae=t(64795),De=t(82262),Le=t(88921),Ue=t(39916),Ne=t(18579),Me=t(80500),Ie=t(58428),Re=t(87849),xe=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),Ve=t(70577),je=t(93212),He=t(40275),ze=t(52995),Ke=t(38410),Qe=t(167),Je=t(53223),Ge=t(97447),_e=t(67830),Ye=[u.rC,m.UH,p.B0,h.Ce,g.IN,s.xK,f.Df,y.ck,b.LB,C.e4,k.ok,T.$F,w.gK,v.e6,S.rQ,P.Jt,F.Wz,A.Xk,D.B2,L.a$,U.jB,d.ZD,N.wF,M.rO,I.jT,R.Xb,x.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,V.cb,j.MT,H.vH,z.v,K.bx,Q.tU,J.zp,G.A,_.pS,Y.A4,X.h8,$.o1,Z.UD,ee.mR,ae.ao,te.Uj,oe.gD,ne.Bw,le.CY,ie.In,re.v0,se.lS,de.jb,ce.yv,ue.Up,me.iW,pe.CQ,he.IT,ge.EZ,fe.xb,ye.PJ,be.X,Ce.ji,ke.is,Te.R9,we.QL,ve.wR,Se.oE,Pe.ye,Fe.UB,Ae.hS,De.Mj,Le.D6,Ue.QO,Ne.V2,Me.im,Ie.Gx,Re.H9,xe.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,Ve.xi,je._2,He.DX,ze.l9,Ke.GR,Qe.ns,Je.Be,Ge.Jm,_e.Mc],Xe=t(97722),$e=(t(85331),t(10961),t(56768));function Ze(e,a,t,o,n,l){const i=(0,$e.g2)("router-view"),r=Xe.H6;return(0,$e.uX)(),(0,$e.Wv)(r,{locale:l.elementLocale},{default:(0,$e.k6)(()=>[(0,$e.bF)(i)]),_:1},8,["locale"])}var ea=t(60782),aa=t(6166),ta=t(55186),oa=t(54791),na={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,ea.L8)(["userConfig","useDarkMode"]),elementLocale(){return"zh-CN"===this.$i18n.locale?ta.A:oa.A}},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(aa.ae.valid(document.body))return void(this.osInstance=(0,aa.ae)(document.body));this.osInstance=(0,aa.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const a=document.querySelector(".el-image-viewer__wrapper");a?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},la=t(71241);const ia=(0,la.A)(na,[["render",Ze]]);var ra=ia,sa=t(16915),da=t(25507),ca=t(46638),ua=t(57477);t(21862),t(50635);i.Yv.add(...Ye);const ma=(0,o.Ef)(ra),pa=(0,n.Zf)();ma.component("font-awesome-icon",r.gc);for(const[ba,Ca]of Object.entries(ua))ma.component(ba,Ca);const ha=()=>{const e=document.documentElement;let a;if(da.A.state.cusDarkMode&&null!==da.A.state.useDarkMode)a=da.A.state.useDarkMode;else{if(a=window.matchMedia("(prefers-color-scheme: dark)").matches,!a){const e=new Date,t=e.getHours();a=t>=22||t<6}da.A.commit("setUseDarkMode",a)}a?e.classList.add("dark"):e.classList.remove("dark")},ga=e=>{const a=document.documentElement;e?a.classList.add("dark"):a.classList.remove("dark")},fa=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},ya=(e,a)=>{const t=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');t.forEach(e=>e.remove());const o=document.createElement("link"),n=document.createElement("link"),l=document.createElement("link");o.rel="icon",n.rel="apple-touch-icon",l.rel="mask-icon",e?(o.href=a?.siteIcon||"/static/media/logo-dark.png",n.href=a?.siteIcon||"/static/media/logo-dark.png",l.href=a?.siteIcon||"/static/media/logo-dark.png"):(o.href=a?.siteIcon||"/static/media/logo.png",n.href=a?.siteIcon||"/static/media/logo.png",l.href=a?.siteIcon||"/static/media/logo.png"),document.head.appendChild(o),document.head.appendChild(n),document.head.appendChild(l)};da.A.dispatch("fetchUserConfig").then(()=>{ha(),fa(da.A.getters.userConfig),ya(da.A.state.useDarkMode,da.A.getters.userConfig),da.A.subscribe((e,a)=>{"setUseDarkMode"===e.type&&da.A.state.cusDarkMode&&(ga(a.useDarkMode),ya(a.useDarkMode,da.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(ha(),ya(da.A.state.useDarkMode,da.A.getters.userConfig))}),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),ma.use(da.A).use(sa.A).use(l.A).use(ca.Ay).use(pa).mount("#app")})}},a={};function t(o){var n=a[o];if(void 0!==n)return n.exports;var l=a[o]={exports:{}};return e[o].call(l.exports,l,l.exports,t),l.exports}t.m=e,function(){var e=[];t.O=function(a,o,n,l){if(!o){var i=1/0;for(c=0;c=l)&&Object.keys(t.O).every(function(e){return t.O[e](o[s])})?o.splice(s--,1):(r=!1,l0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[o,n,l]}}(),function(){t.n=function(e){var a=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(a,{a:a}),a}}(),function(){t.d=function(e,a){for(var o in a)t.o(a,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:a[o]})}}(),function(){t.f={},t.e=function(e){return Promise.all(Object.keys(t.f).reduce(function(a,o){return t.f[o](e,a),a},[]))}}(),function(){t.u=function(e){return"js/"+e+"."+{21:"f318bc2e",22:"f752503c",148:"b1b1da05",227:"44709224",278:"bb8355a5",283:"5d4f325d",331:"4f42d273",412:"2eefa4a8",449:"865896d4",679:"23bb4457",888:"f7235188",903:"808d69b5",967:"db104add"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{148:"ff5f4652",227:"e7484000",278:"e44cbf52",322:"2b40f004",331:"dd13d5f5",385:"20c34d33",412:"ba63fb59",449:"0a847317",451:"7e03bef9",679:"e7484000",888:"af58b0bb",903:"7a90c42f",967:"3f3c6dac"}[e]+".css"}}(),function(){t.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){t.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)}}(),function(){var e={},a="sanyue_imghub:";t.l=function(o,n,l,i){if(e[o])e[o].push(n);else{var r,s;if(void 0!==l)for(var d=document.getElementsByTagName("script"),c=0;c {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n adminLoggedIn: state => state.adminLoggedIn,\r\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setAdminLoggedIn(state, loggedIn) {\r\n state.adminLoggedIn = loggedIn;\r\n },\r\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\r\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"21\":\"f318bc2e\",\"22\":\"f752503c\",\"148\":\"b1b1da05\",\"227\":\"44709224\",\"278\":\"bb8355a5\",\"283\":\"5d4f325d\",\"331\":\"4f42d273\",\"412\":\"2eefa4a8\",\"449\":\"865896d4\",\"679\":\"23bb4457\",\"888\":\"f7235188\",\"903\":\"808d69b5\",\"967\":\"db104add\"}[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 + \".\" + {\"148\":\"ff5f4652\",\"227\":\"e7484000\",\"278\":\"e44cbf52\",\"322\":\"2b40f004\",\"331\":\"dd13d5f5\",\"385\":\"20c34d33\",\"412\":\"ba63fb59\",\"449\":\"0a847317\",\"451\":\"7e03bef9\",\"679\":\"e7484000\",\"888\":\"af58b0bb\",\"903\":\"7a90c42f\",\"967\":\"3f3c6dac\"}[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 = {\"148\":1,\"227\":1,\"278\":1,\"322\":1,\"331\":1,\"385\":1,\"412\":1,\"449\":1,\"451\":1,\"679\":1,\"888\":1,\"903\":1,\"967\":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(!/^(322|385|451)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(81525); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.08a5e390.js.map.gz b/frontend-dist/js/app.08a5e390.js.map.gz new file mode 100644 index 00000000..120081b4 Binary files /dev/null and b/frontend-dist/js/app.08a5e390.js.map.gz differ diff --git a/frontend-dist/js/app.e9233b6a.js.gz b/frontend-dist/js/app.e9233b6a.js.gz deleted file mode 100644 index b3f2e4ea..00000000 Binary files a/frontend-dist/js/app.e9233b6a.js.gz and /dev/null differ diff --git a/frontend-dist/js/app.e9233b6a.js.map b/frontend-dist/js/app.e9233b6a.js.map deleted file mode 100644 index bced0099..00000000 --- a/frontend-dist/js/app.e9233b6a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/app.e9233b6a.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/locales/index.js","webpack://sanyue_imghub/./src/utils/fontawesomeIcons.js","webpack://sanyue_imghub/./src/App.vue?83ca","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n withCredentials: true, // 始终携带 Cookie(HttpOnly session cookie)\r\n});\r\n\r\nexport default instance;\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\nimport i18n from '@/locales'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\n getters: {\r\n userConfig: state => state.userConfig,\n bingWallPapers: state => state.bingWallPapers,\n adminLoggedIn: state => state.adminLoggedIn,\n userLoggedIn: state => state.userLoggedIn,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\n state.bingWallPapers = bingWallPapers;\n },\n setAdminLoggedIn(state, loggedIn) {\n state.adminLoggedIn = loggedIn;\r\n },\r\n setUserLoggedIn(state, loggedIn) {\r\n state.userLoggedIn = loggedIn;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\n try {\n const response = await axios.get('/api/userConfig');\n commit('setUserConfig', response.data);\n } catch (error) {\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState({\r\n // 只持久化非敏感数据,不持久化认证状态\r\n paths: [\r\n 'userConfig',\r\n 'uploadMethod',\r\n 'uploadCopyUrlForm',\r\n 'compressConfig',\r\n 'storeUploadChannel',\r\n 'storeChannelName',\r\n 'storeAutoRetry',\r\n 'storeUploadNameType',\r\n 'uploadFolder',\r\n 'customUrlSettings',\r\n 'adminUrlSettings',\r\n 'autoReUpload',\r\n 'useDarkMode',\r\n 'cusDarkMode',\n ]\r\n })]\r\n})\r\n","import { createI18n } from 'vue-i18n'\r\nimport zhCN from './zh-CN.json'\r\nimport en from './en.json'\r\n\r\nconst LOCALE_KEY = 'app-locale'\r\n\r\nfunction getStoredLocale() {\r\n const stored = localStorage.getItem(LOCALE_KEY)\r\n if (stored === 'zh-CN' || stored === 'en') return stored\r\n return 'zh-CN'\r\n}\r\n\r\nconst i18n = createI18n({\r\n legacy: true,\r\n locale: getStoredLocale(),\r\n fallbackLocale: 'zh-CN',\r\n messages: { 'zh-CN': zhCN, en }\r\n})\r\n\r\nexport function setLocale(locale) {\r\n i18n.global.locale = locale\r\n localStorage.setItem(LOCALE_KEY, locale)\r\n document.documentElement.lang = locale === 'zh-CN' ? 'zh-CN' : 'en'\r\n}\r\n\r\nexport { LOCALE_KEY, getStoredLocale }\r\nexport default i18n\r\n","import { faAws } from '@fortawesome/free-brands-svg-icons/faAws';\r\nimport { faCloudflare } from '@fortawesome/free-brands-svg-icons/faCloudflare';\r\nimport { faDiscord } from '@fortawesome/free-brands-svg-icons/faDiscord';\r\nimport { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoubleLeft';\r\nimport { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';\r\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\r\nimport { faArrowLeft } from '@fortawesome/free-solid-svg-icons/faArrowLeft';\r\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons/faArrowUp';\r\nimport { faBan } from '@fortawesome/free-solid-svg-icons/faBan';\r\nimport { faBars } from '@fortawesome/free-solid-svg-icons/faBars';\r\nimport { faBook } from '@fortawesome/free-solid-svg-icons/faBook';\r\nimport { faBullhorn } from '@fortawesome/free-solid-svg-icons/faBullhorn';\r\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons/faCalendar';\r\nimport { faChartBar } from '@fortawesome/free-solid-svg-icons/faChartBar';\r\nimport { faChartLine } from '@fortawesome/free-solid-svg-icons/faChartLine';\r\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck';\r\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons/faCheckSquare';\r\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\r\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons/faChevronLeft';\r\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\r\nimport { faCircleHalfStroke } from '@fortawesome/free-solid-svg-icons/faCircleHalfStroke';\r\nimport { faClock } from '@fortawesome/free-solid-svg-icons/faClock';\r\nimport { faCloud } from '@fortawesome/free-solid-svg-icons/faCloud';\r\nimport { faCloudUpload } from '@fortawesome/free-solid-svg-icons/faCloudUpload';\r\nimport { faCloudUploadAlt } from '@fortawesome/free-solid-svg-icons/faCloudUploadAlt';\r\nimport { faCode } from '@fortawesome/free-solid-svg-icons/faCode';\r\nimport { faCodeBranch } from '@fortawesome/free-solid-svg-icons/faCodeBranch';\r\nimport { faCog } from '@fortawesome/free-solid-svg-icons/faCog';\r\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\r\nimport { faComments } from '@fortawesome/free-solid-svg-icons/faComments';\r\nimport { faCompressAlt } from '@fortawesome/free-solid-svg-icons/faCompressAlt';\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\r\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\r\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons/faEdit';\r\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons/faEllipsisH';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons/faEllipsisV';\r\nimport { faExclamation } from '@fortawesome/free-solid-svg-icons/faExclamation';\r\nimport { faExclamationCircle } from '@fortawesome/free-solid-svg-icons/faExclamationCircle';\r\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons/faEye';\r\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\r\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\r\nimport { faFileExport } from '@fortawesome/free-solid-svg-icons/faFileExport';\r\nimport { faFileSignature } from '@fortawesome/free-solid-svg-icons/faFileSignature';\r\nimport { faFilter } from '@fortawesome/free-solid-svg-icons/faFilter';\r\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\r\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\r\nimport { faFolderTree } from '@fortawesome/free-solid-svg-icons/faFolderTree';\r\nimport { faGlobe } from '@fortawesome/free-solid-svg-icons/faGlobe';\r\nimport { faHashtag } from '@fortawesome/free-solid-svg-icons/faHashtag';\r\nimport { faHistory } from '@fortawesome/free-solid-svg-icons/faHistory';\r\nimport { faHome } from '@fortawesome/free-solid-svg-icons/faHome';\r\nimport { faICursor } from '@fortawesome/free-solid-svg-icons/faICursor';\r\nimport { faImage } from '@fortawesome/free-solid-svg-icons/faImage';\r\nimport { faImages } from '@fortawesome/free-solid-svg-icons/faImages';\r\nimport { faInbox } from '@fortawesome/free-solid-svg-icons/faInbox';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\r\nimport { faLink } from '@fortawesome/free-solid-svg-icons/faLink';\r\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\r\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\r\nimport { faMinusSquare } from '@fortawesome/free-solid-svg-icons/faMinusSquare';\r\nimport { faMoon } from '@fortawesome/free-solid-svg-icons/faMoon';\r\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\r\nimport { faPager } from '@fortawesome/free-solid-svg-icons/faPager';\r\nimport { faPaperPlane } from '@fortawesome/free-solid-svg-icons/faPaperPlane';\r\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\r\nimport { faPlus } from '@fortawesome/free-solid-svg-icons/faPlus';\r\nimport { faQuestionCircle } from '@fortawesome/free-solid-svg-icons/faQuestionCircle';\r\nimport { faQuoteRight } from '@fortawesome/free-solid-svg-icons/faQuoteRight';\r\nimport { faRedo } from '@fortawesome/free-solid-svg-icons/faRedo';\r\nimport { faRobot } from '@fortawesome/free-solid-svg-icons/faRobot';\r\nimport { faSave } from '@fortawesome/free-solid-svg-icons/faSave';\r\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\r\nimport { faServer } from '@fortawesome/free-solid-svg-icons/faServer';\r\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\r\nimport { faShield } from '@fortawesome/free-solid-svg-icons/faShield';\r\nimport { faShieldAlt } from '@fortawesome/free-solid-svg-icons/faShieldAlt';\r\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons/faSignOutAlt';\r\nimport { faSortAlphaUp } from '@fortawesome/free-solid-svg-icons/faSortAlphaUp';\r\nimport { faSortAmountDown } from '@fortawesome/free-solid-svg-icons/faSortAmountDown';\r\nimport { faSpinner } from '@fortawesome/free-solid-svg-icons/faSpinner';\r\nimport { faSquare } from '@fortawesome/free-solid-svg-icons/faSquare';\r\nimport { faSun } from '@fortawesome/free-solid-svg-icons/faSun';\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons/faSync';\r\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons/faSyncAlt';\r\nimport { faTachometerAlt } from '@fortawesome/free-solid-svg-icons/faTachometerAlt';\r\nimport { faTag } from '@fortawesome/free-solid-svg-icons/faTag';\r\nimport { faTags } from '@fortawesome/free-solid-svg-icons/faTags';\r\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\r\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\r\nimport { faTools } from '@fortawesome/free-solid-svg-icons/faTools';\r\nimport { faTrashAlt } from '@fortawesome/free-solid-svg-icons/faTrashAlt';\r\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\r\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons/faUserCog';\r\n\r\nexport default [\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faArrowDown,\r\n faArrowLeft,\r\n faArrowUp,\r\n faAws,\r\n faBan,\r\n faBars,\r\n faBook,\r\n faBullhorn,\r\n faCalendar,\r\n faChartBar,\r\n faChartLine,\r\n faCheck,\r\n faCheckSquare,\r\n faChevronDown,\r\n faChevronLeft,\r\n faChevronRight,\r\n faCircleHalfStroke,\r\n faClock,\r\n faCloud,\r\n faCloudflare,\r\n faCloudUpload,\r\n faCloudUploadAlt,\r\n faCode,\r\n faCodeBranch,\r\n faCog,\r\n faCogs,\r\n faComments,\r\n faCompressAlt,\r\n faCopy,\r\n faDatabase,\r\n faDiscord,\r\n faDownload,\r\n faEdit,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faExclamation,\r\n faExclamationCircle,\r\n faExclamationTriangle,\r\n faExternalLinkAlt,\r\n faEye,\r\n faFile,\r\n faFileAlt,\r\n faFileExport,\r\n faFileSignature,\r\n faFilter,\r\n faFolder,\r\n faFolderOpen,\r\n faFolderTree,\r\n faGlobe,\r\n faHashtag,\r\n faHistory,\r\n faHome,\r\n faICursor,\r\n faImage,\r\n faImages,\r\n faInbox,\r\n faInfoCircle,\r\n faLink,\r\n faList,\r\n faMinus,\r\n faMinusSquare,\r\n faMoon,\r\n faMusic,\r\n faPager,\r\n faPaperPlane,\r\n faPaste,\r\n faPlus,\r\n faQuestionCircle,\r\n faQuoteRight,\r\n faRedo,\r\n faRobot,\r\n faSave,\r\n faSearch,\r\n faServer,\r\n faShareAlt,\r\n faShield,\r\n faShieldAlt,\r\n faSignOutAlt,\r\n faSortAlphaUp,\r\n faSortAmountDown,\r\n faSpinner,\r\n faSquare,\r\n faSun,\r\n faSync,\r\n faSyncAlt,\r\n faTachometerAlt,\r\n faTag,\r\n faTags,\r\n faThLarge,\r\n faTimes,\r\n faTools,\r\n faTrashAlt,\r\n faUpload,\r\n faUserCog\r\n];\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n const _component_el_config_provider = _resolveComponent(\"el-config-provider\");\n return _openBlock(), _createBlock(_component_el_config_provider, {\n locale: $options.elementLocale\n }, {\n default: _withCtx(() => [_createVNode(_component_router_view)]),\n _: 1\n }, 8, [\"locale\"]);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nimport zhCnLocale from 'element-plus/es/locale/lang/zh-cn';\nimport enLocale from 'element-plus/es/locale/lang/en';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode']),\n elementLocale() {\n return this.$i18n.locale === 'zh-CN' ? zhCnLocale : enLocale;\n }\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=6633a13d\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport fontAwesomeIcons from './utils/fontawesomeIcons';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport i18n from './locales'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(...fontAwesomeIcons);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/static/media/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).use(i18n).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(i18n).use(head).mount('#app');\r\n})\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"21\":\"e06c66b8\",\"22\":\"f752503c\",\"227\":\"44709224\",\"278\":\"66af4a0a\",\"283\":\"5d4f325d\",\"331\":\"0b44b778\",\"412\":\"2eefa4a8\",\"449\":\"865896d4\",\"679\":\"23bb4457\",\"870\":\"9e7db652\",\"888\":\"f7235188\",\"957\":\"e8a16dfc\",\"967\":\"4c8a2786\"}[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 + \".\" + {\"227\":\"e7484000\",\"278\":\"e44cbf52\",\"322\":\"2b40f004\",\"331\":\"dd13d5f5\",\"385\":\"20c34d33\",\"412\":\"ba63fb59\",\"449\":\"0a847317\",\"451\":\"7e03bef9\",\"679\":\"e7484000\",\"870\":\"16cbea0a\",\"888\":\"793f4b66\",\"957\":\"db5680df\",\"967\":\"3f3c6dac\"}[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 = {\"227\":1,\"278\":1,\"322\":1,\"331\":1,\"385\":1,\"412\":1,\"449\":1,\"451\":1,\"679\":1,\"870\":1,\"888\":1,\"957\":1,\"967\":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(!/^(322|385|451)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(81525); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","withCredentials","adminAuthGuard","to","from","next","get","then","res","data","adminRequired","store","commit","valid","authType","wasLoggedIn","state","adminLoggedIn","name","ElMessage","error","i18n","global","t","catch","userAuthGuard","userRequired","userLoggedIn","routes","path","component","beforeEnter","router","createRouter","history","createWebHistory","process","createStore","userConfig","bingWallPapers","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","useDarkMode","cusDarkMode","getters","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","mutations","setUserConfig","setBingWallPapers","setAdminLoggedIn","loggedIn","setUserLoggedIn","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","key","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","response","console","log","fetchBingWallPapers","wallpapers","map","wallpaper","url","Promise","all","resolve","reject","img","Image","onload","onerror","src","modules","plugins","createPersistedState","paths","LOCALE_KEY","getStoredLocale","stored","createI18n","legacy","locale","fallbackLocale","messages","zhCN","en","setLocale","document","documentElement","lang","faAngleDoubleLeft","faAngleDoubleRight","faArrowDown","faArrowLeft","faArrowUp","faAws","faBan","faBars","faBook","faBullhorn","faCalendar","faChartBar","faChartLine","faCheck","faCheckSquare","faChevronDown","faChevronLeft","faChevronRight","faCircleHalfStroke","faClock","faCloud","faCloudflare","faCloudUpload","faCloudUploadAlt","faCode","faCodeBranch","faCog","faCogs","faComments","faCompressAlt","faCopy","faDatabase","faDiscord","faDownload","faEdit","faEllipsisH","faEllipsisV","faExclamation","faExclamationCircle","faExclamationTriangle","faExternalLinkAlt","faEye","faFile","faFileAlt","faFileExport","faFileSignature","faFilter","faFolder","faFolderOpen","faFolderTree","faGlobe","faHashtag","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInfoCircle","faLink","faList","faMinus","faMinusSquare","faMoon","faMusic","faPager","faPaperPlane","faPaste","faPlus","faQuestionCircle","faQuoteRight","faRedo","faRobot","faSave","faSearch","faServer","faShareAlt","faShield","faShieldAlt","faSignOutAlt","faSortAlphaUp","faSortAmountDown","faSpinner","faSquare","faSun","faSync","faSyncAlt","faTachometerAlt","faTag","faTags","faThLarge","faTimes","faTools","faTrashAlt","faUpload","faUserCog","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_el_config_provider","elementLocale","default","_","osInstance","imageViewerObserver","computed","this","$i18n","mounted","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","MutationObserver","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fontAwesomeIcons","app","createApp","App","head","createHead","FontAwesomeIcon","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","isDarkMode","window","matchMedia","matches","now","Date","hour","getHours","classList","remove","applyDarkModeClass","presetSiteTitle","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","subscribe","mutation","type","payload","use","ElementPlus","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","push","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","err","Error","code","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/app.e9233b6a.js.map.gz b/frontend-dist/js/app.e9233b6a.js.map.gz deleted file mode 100644 index 2c77682d..00000000 Binary files a/frontend-dist/js/app.e9233b6a.js.map.gz and /dev/null differ