From 7583fda4fcd531e6c250be912db4fc98cfac8c5e Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Tue, 28 Jul 2026 17:02:37 +0800 Subject: [PATCH] fix: align collapsed upload status card --- .../{927.b1a356fd.css => 807.413b2fce.css} | 2 +- ...27.b1a356fd.css.gz => 807.413b2fce.css.gz} | Bin 12056 -> 12061 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 545 -> 546 bytes frontend-dist/js/807.0a4d199f.js | 2 ++ frontend-dist/js/807.0a4d199f.js.gz | Bin 0 -> 32915 bytes frontend-dist/js/807.0a4d199f.js.map | 1 + frontend-dist/js/807.0a4d199f.js.map.gz | Bin 0 -> 82487 bytes frontend-dist/js/927.1adefc82.js | 2 -- frontend-dist/js/927.1adefc82.js.gz | Bin 32692 -> 0 bytes frontend-dist/js/927.1adefc82.js.map | 1 - frontend-dist/js/927.1adefc82.js.map.gz | Bin 82764 -> 0 bytes frontend-dist/js/app.13a65c7a.js | 2 ++ frontend-dist/js/app.13a65c7a.js.gz | Bin 0 -> 25525 bytes ...pp.79c9e5f6.js.map => app.13a65c7a.js.map} | 2 +- frontend-dist/js/app.13a65c7a.js.map.gz | Bin 0 -> 18374 bytes frontend-dist/js/app.79c9e5f6.js | 2 -- frontend-dist/js/app.79c9e5f6.js.gz | Bin 25528 -> 0 bytes frontend-dist/js/app.79c9e5f6.js.map.gz | Bin 18375 -> 0 bytes 19 files changed, 8 insertions(+), 8 deletions(-) rename frontend-dist/css/{927.b1a356fd.css => 807.413b2fce.css} (55%) rename frontend-dist/css/{927.b1a356fd.css.gz => 807.413b2fce.css.gz} (56%) create mode 100644 frontend-dist/js/807.0a4d199f.js create mode 100644 frontend-dist/js/807.0a4d199f.js.gz create mode 100644 frontend-dist/js/807.0a4d199f.js.map create mode 100644 frontend-dist/js/807.0a4d199f.js.map.gz delete mode 100644 frontend-dist/js/927.1adefc82.js delete mode 100644 frontend-dist/js/927.1adefc82.js.gz delete mode 100644 frontend-dist/js/927.1adefc82.js.map delete mode 100644 frontend-dist/js/927.1adefc82.js.map.gz create mode 100644 frontend-dist/js/app.13a65c7a.js create mode 100644 frontend-dist/js/app.13a65c7a.js.gz rename frontend-dist/js/{app.79c9e5f6.js.map => app.13a65c7a.js.map} (99%) create mode 100644 frontend-dist/js/app.13a65c7a.js.map.gz delete mode 100644 frontend-dist/js/app.79c9e5f6.js delete mode 100644 frontend-dist/js/app.79c9e5f6.js.gz delete mode 100644 frontend-dist/js/app.79c9e5f6.js.map.gz diff --git a/frontend-dist/css/927.b1a356fd.css b/frontend-dist/css/807.413b2fce.css similarity index 55% rename from frontend-dist/css/927.b1a356fd.css rename to frontend-dist/css/807.413b2fce.css index eb2fd69e..3eee8d90 100644 --- a/frontend-dist/css/927.b1a356fd.css +++ b/frontend-dist/css/807.413b2fce.css @@ -1 +1 @@ -.history-container[data-v-7da2f8c2]{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-7da2f8c2]: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-7da2f8c2]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-7da2f8c2]{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-7da2f8c2]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-7da2f8c2]{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-7da2f8c2]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-7da2f8c2]{display:flex;gap:10px}.header-right .el-button[data-v-7da2f8c2]{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-7da2f8c2]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-7da2f8c2]{background:#dc2626;color:#fff}.history-content[data-v-7da2f8c2]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-7da2f8c2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-7da2f8c2]{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-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-7da2f8c2]{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-7da2f8c2],.grid-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-7da2f8c2]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-7da2f8c2]{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-7da2f8c2]{opacity:1}.grid-actions[data-v-7da2f8c2]{display:flex;gap:15px}.grid-info[data-v-7da2f8c2]{padding:12px}.file-name[data-v-7da2f8c2]{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-7da2f8c2]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-7da2f8c2]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-7da2f8c2]{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-7da2f8c2]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-7da2f8c2]{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-7da2f8c2],.list-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-7da2f8c2]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-7da2f8c2]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-7da2f8c2]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-7da2f8c2]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-7da2f8c2]{display:flex;gap:8px}.empty-state[data-v-7da2f8c2]{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-7da2f8c2]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-7da2f8c2]::-webkit-scrollbar{width:8px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-7da2f8c2]{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-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-7da2f8c2]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-7da2f8c2]:last-child{border-left:2px solid transparent}.timeline-header[data-v-7da2f8c2]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-7da2f8c2]{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-7da2f8c2]{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-7da2f8c2]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-7da2f8c2]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-7da2f8c2],.no-more-hint[data-v-7da2f8c2]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-7da2f8c2]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-7da2f8c2]{padding:15px 20px}.header-left h2[data-v-7da2f8c2]{font-size:20px}.history-content[data-v-7da2f8c2]{padding:15px 20px}.grid-view[data-v-7da2f8c2]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-7da2f8c2]{height:120px}.list-meta[data-v-7da2f8c2]{display:none}.list-info[data-v-7da2f8c2]{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-ce6ff2ce]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-ce6ff2ce] svg,.channel-svg-icon[data-v-ce6ff2ce]{width:1em;height:1em;fill:currentColor}.channel-icon-wrapper.channel-brand-telegram[data-v-ce6ff2ce]{color:#229ed9}.channel-icon-wrapper.channel-brand-cfr2[data-v-ce6ff2ce]{color:#f38020}.channel-icon-wrapper.channel-brand-s3[data-v-ce6ff2ce]{color:#f90}.channel-icon-wrapper.channel-brand-discord[data-v-ce6ff2ce]{color:#5865f2}.channel-icon-wrapper.channel-brand-huggingface[data-v-ce6ff2ce]{color:#ff9d00}.channel-icon-wrapper.channel-brand-webdav[data-v-ce6ff2ce]{color:#14b8a6}.upload-settings-dialog .radio-card-group.compact{gap:8px}.upload-settings-dialog .radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.upload-settings-dialog .radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}.upload-settings-dialog .slider-item{flex-direction:column;align-items:flex-start;gap:12px}.upload-settings-dialog .slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.upload-settings-dialog .slider-wrapper .el-slider{flex:1;min-width:0}.upload-settings-dialog .slider-input{width:96px!important;flex-shrink:0}.upload-settings-dialog .slider-input .el-input__inner{text-align:center}.upload-settings-dialog .slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.upload-settings-dialog .slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.upload-settings-dialog .setting-item .radio-card-group.compact{width:100%}.upload-settings-dialog .radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.upload-settings-dialog .radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{justify-content:center}.upload-settings-dialog .slider-wrapper{gap:8px}}.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-645a7810]{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-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-645a7810]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-645a7810]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-645a7810]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-645a7810]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-645a7810]:last-child{margin-bottom:0}.upload-list-item-url[data-v-645a7810]{display:flex;flex-direction:column}.file-icon[data-v-645a7810]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-645a7810]{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-645a7810]: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-645a7810]{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-645a7810]{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-645a7810] .el-progress{--el-color-primary:var(--primary-color)}.upload-list-item-progress[data-v-645a7810] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .el-progress-bar__inner{border-radius:8px;background:var(--primary-color)!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .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-645a7810 1s linear infinite}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-645a7810] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-645a7810] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-645a7810 1s ease-in-out infinite}.upload-list-item-progress[data-v-645a7810] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-645a7810{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-645a7810{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-645a7810] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-645a7810] .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-645a7810] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-645a7810] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-645a7810] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-645a7810] .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-645a7810 2s infinite;z-index:0}@keyframes shimmer-645a7810{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-645a7810] .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-645a7810] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-645a7810] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-645a7810] .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-645a7810] .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-645a7810] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-645a7810] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-645a7810] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-645a7810 2s ease-in-out infinite}.upload-list-item-url[data-v-645a7810] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-645a7810{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-645a7810]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:10px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);box-shadow:var(--upload-action-btn-shadow);cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease;font-size:16px;position:relative;overflow:hidden;margin:4px 0;outline:none}.modern-file-action-btn[data-v-645a7810]:before{content:"";position:absolute;inset:2px;border-radius:8px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-file-action-btn[data-v-645a7810]:hover{background:var(--upload-action-btn-hover-bg)}.modern-file-action-btn[data-v-645a7810]:hover:before{opacity:.08}.modern-file-action-btn[data-v-645a7810]:active{transform:scale(.96)}.modern-file-action-btn-primary[data-v-645a7810]{color:var(--upload-action-copy-color)}.modern-file-action-btn-danger[data-v-645a7810]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-file-action-btn-danger[data-v-645a7810]:hover{background:var(--upload-action-danger-hover-bg)}@media (max-width:768px){.upload-list-item[data-v-645a7810]{margin:5px 6px;padding:7px 8px;border-radius:12px}.upload-list-item-content[data-v-645a7810]{margin-left:2px}.upload-list-item-action[data-v-645a7810]{gap:3px}.upload-list-item-url-row[data-v-645a7810]{width:42vw;flex-direction:column;gap:4px;margin-bottom:4px}.upload-list-item-progress[data-v-645a7810]{width:32vw;margin-top:5px;padding:2px 5px;border-radius:9px}.upload-list-item-progress[data-v-645a7810] .el-progress-bar__outer{height:6px!important}.upload-list-item-url[data-v-645a7810] .el-input__wrapper{border-radius:7px}.upload-list-item-url[data-v-645a7810] .el-input__inner{font-size:10px;padding-left:8px}.upload-list-item-url[data-v-645a7810] .el-input-group__prepend{font-size:9px;padding:0 6px;border-radius:7px 0 0 7px}.modern-file-action-btn[data-v-645a7810]{width:26px;height:26px;margin:2px 0;border-radius:8px;font-size:12px}.upload-list-item-name-wrapper[data-v-645a7810]{padding:3px 8px;margin-bottom:5px;border-radius:7px}.upload-list-item-name[data-v-645a7810]{font-size:11px;width:32vw}}.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-5e12bf57{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-5e12bf57]{--upload-card-height:45vh;--upload-card-busy-height:17vh;--upload-list-height:7vh;--upload-list-inner-height:var(--upload-list-height);--upload-list-busy-height:calc(var(--upload-card-height) - var(--upload-card-busy-height) + var(--upload-list-height));--upload-list-gap:10px;--upload-list-radius:15px;--upload-card-vertical-padding:40px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;height:calc(var(--upload-card-height) + var(--upload-list-height) + var(--upload-list-gap) + var(--upload-card-vertical-padding))}.upload-list-card[data-v-5e12bf57]{width:55vw;height:var(--upload-list-height);margin-top:var(--upload-list-gap);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--upload-list-radius);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-5e12bf57] .el-card__body{padding:0;width:100%;height:100%;overflow:hidden}.upload-list-container[data-v-5e12bf57]{width:100%;height:100%;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-5e12bf57]{width:70vw}}.upload-list-card.upload-list-busy[data-v-5e12bf57]{height:var(--upload-list-busy-height)}.upload-list-card[data-v-5e12bf57]:not(.upload-list-busy) .el-scrollbar__wrap{overflow:hidden}.upload-list-card[data-v-5e12bf57]:not(.upload-list-busy) .el-scrollbar__bar{display:none}.upload-card-wrapper[data-v-5e12bf57]{position:relative;overflow:visible}.folder-upload-input[data-v-5e12bf57]{display:none}.folder-upload-icon-button[data-v-5e12bf57]{position:absolute;right:18px;bottom:18px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;box-sizing:border-box;padding:0;border:1px solid var(--glass-border);border-radius:9px;background:var(--glass-bg);color:var(--el-text-color-secondary);font-size:11px;line-height:1;cursor:pointer;transition:color .2s ease,background-color .2s ease,border-color .2s ease}.folder-upload-icon-button[data-v-5e12bf57]:hover{color:var(--primary-color-accent);border-color:color-mix(in srgb,var(--primary-color) 48%,var(--glass-border));background:color-mix(in srgb,var(--primary-color) 14%,var(--glass-bg))}.folder-upload-icon-button[data-v-5e12bf57]:focus-visible{outline:none;color:var(--primary-color-accent);border-color:color-mix(in srgb,var(--primary-color) 60%,var(--glass-border));background:color-mix(in srgb,var(--primary-color) 14%,var(--glass-bg))}.folder-upload-icon-button.upload-list-busy[data-v-5e12bf57]{right:12px;bottom:12px;width:26px;height:26px;border-radius:8px;font-size:10px}@media (max-width:768px){.folder-upload-icon-button[data-v-5e12bf57]{right:10px;bottom:10px;width:26px;height:26px;border-radius:8px;font-size:10px}}.upload-card-glow[data-v-5e12bf57]{position:absolute;width:200px;height:200px;border-radius:50%;background:var(--upload-card-hover-glow-bg);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-5e12bf57]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-5e12bf57]{width:70vw}}.upload-card-busy[data-v-5e12bf57] .el-upload-dragger{height:var(--upload-card-busy-height)}[data-v-5e12bf57] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);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);transition:height .3s ease,opacity .25s ease,border-color .25s ease,box-shadow .25s ease,background-color .25s ease}[data-v-5e12bf57] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-5e12bf57] .el-upload-dragger.is-dragover,[data-v-5e12bf57] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-5e12bf57] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-5e12bf57]{position:relative;background:none}.upload-card.is-uploading[data-v-5e12bf57]: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(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-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-5e12bf57 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-5e12bf57]{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-5e12bf57]{font-size:small}}.el-upload__text.upload-list-busy[data-v-5e12bf57]{font-size:small}.el-icon--upload[data-v-5e12bf57]{font-size:100px;transition:font-size .3s ease;color:#60a5fa}html.dark .el-icon--upload[data-v-5e12bf57]{color:#6b6b73}.el-upload__text[data-v-5e12bf57] em{color:#1d4ed8}html.dark .el-upload__text[data-v-5e12bf57] em{color:#93c5fd}.el-icon--upload.upload-list-busy[data-v-5e12bf57]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-5e12bf57]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-5e12bf57]{font-size:30px}}.paste-card[data-v-5e12bf57]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);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-5e12bf57]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-5e12bf57]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-5e12bf57]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-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-5e12bf57 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-5e12bf57] .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-5e12bf57]{height:var(--upload-card-busy-height)}.upload-card-textarea[data-v-5e12bf57]{width:50vw;height:70%;border-radius:16px;background:color-mix(in srgb,var(--primary-color) 4%,var(--glass-bg));border:1px solid var(--glass-border);box-shadow:none;transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease;box-sizing:border-box;display:flex;position:relative;overflow:hidden}.upload-card-busy .upload-card-textarea[data-v-5e12bf57]{height:50%}.upload-card-textarea[data-v-5e12bf57]:hover{background:color-mix(in srgb,var(--primary-color) 6%,var(--glass-bg));border-color:var(--glass-border-hover)}.upload-card-textarea[data-v-5e12bf57]:focus-within{background:color-mix(in srgb,var(--primary-color) 7%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 45%,var(--glass-border));box-shadow:none}.upload-card-textarea[data-v-5e12bf57] .el-textarea__inner{border-radius:16px;background:transparent;transition:color .2s ease,background-color .2s ease;resize:none;border:none;box-shadow:none!important;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}.upload-card-textarea[data-v-5e12bf57] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-5e12bf57] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-5e12bf57] .el-textarea__inner:focus{background:transparent;box-shadow:none!important}.upload-card-textarea[data-v-5e12bf57] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-5e12bf57] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-5e12bf57] ::-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-5e12bf57] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-5e12bf57]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-5e12bf57]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 10%,transparent)!important;border:1px solid color-mix(in srgb,var(--primary-color) 36%,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-5e12bf57]:hover{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-5e12bf57]:focus-visible{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 14%,transparent)!important}.paste-card-upload-button[data-v-5e12bf57]:active{transform:translateY(0);background:color-mix(in srgb,var(--primary-color) 18%,transparent)!important}.upload-card-busy .paste-card-upload-button[data-v-5e12bf57]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-5e12bf57]{margin-top:10px}.paste-card-method-group[data-v-5e12bf57]{position:relative;display:inline-flex;align-items:center;width:158px;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;overflow:hidden}.paste-card-method-group[data-v-5e12bf57]:before{content:"";position:absolute;top:3px;left:3px;width:calc(50% - 4px);height:calc(100% - 6px);border-radius:7px;background:color-mix(in srgb,var(--primary-color) 14%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary-color) 42%,var(--glass-border)) inset;transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.paste-card-method-group.is-external[data-v-5e12bf57]:before{transform:translateX(calc(100% + 2px))}.paste-card-method-button[data-v-5e12bf57]{position:relative;z-index:1;display:inline-flex;flex:1 1 0;align-items:center;justify-content:center;min-width:0;height:30px;box-sizing:border-box;padding:0 14px;border:none;border-radius:7px;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.paste-card-method-button.is-active[data-v-5e12bf57],.paste-card-method-button[data-v-5e12bf57]:hover{color:var(--primary-color-accent)}.paste-card-method-button[data-v-5e12bf57]:focus-visible{outline:none;color:var(--primary-color-accent)}@media (max-width:768px){.paste-card[data-v-5e12bf57]{height:var(--upload-card-height);min-height:0;max-height:var(--upload-card-height);padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-5e12bf57]{height:var(--upload-card-busy-height);min-height:0;max-height:var(--upload-card-busy-height);padding:5px}.upload-card-textarea[data-v-5e12bf57]{margin-top:4px;width:calc(100% - 4px)!important;min-height:0;flex-shrink:1}.upload-card-textarea[data-v-5e12bf57] .el-textarea__inner{height:100%;min-height:0!important;box-sizing:border-box;border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-5e12bf57]{flex:0 0 auto;width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-5e12bf57]{letter-spacing:.02em;padding:0 10px}.paste-card-upload-button[data-v-5e12bf57],.upload-card-busy .paste-card-upload-button[data-v-5e12bf57]{height:28px;min-width:56px;border-radius:7px!important;font-size:11px}.upload-card-busy .paste-card-actions[data-v-5e12bf57]{margin-top:6px}.paste-card-method-group[data-v-5e12bf57]{width:112px;height:28px;padding:2px;border-radius:8px}.paste-card-method-group[data-v-5e12bf57]:before{top:2px;left:2px;width:calc(50% - 3px);height:calc(100% - 4px);border-radius:6px}.paste-card-method-button[data-v-5e12bf57]{height:22px;padding:0 8px;font-size:10px;border-radius:6px}}.upload-list-dashboard[data-v-5e12bf57]{display:flex;justify-content:space-between;align-items:center;height:var(--upload-list-inner-height);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:var(--upload-list-radius);box-shadow:var(--glass-shadow);opacity:.7}[data-v-5e12bf57] .el-upload-dragger{position:relative;overflow:hidden}[data-v-5e12bf57] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:200px 200px}[data-v-5e12bf57] .el-upload-dragger:after,[data-v-5e12bf57] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-5e12bf57] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-5e12bf57]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-5e12bf57 60s linear infinite}.upload-card[data-v-5e12bf57]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-5e12bf57 40s linear infinite,starPulse-5e12bf57 4s ease-in-out infinite}@keyframes starScroll-5e12bf57{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-5e12bf57{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-5e12bf57]{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-5e12bf57]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-5e12bf57]{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-5e12bf57]:focus,.modern-action-btn[data-v-5e12bf57]:focus-visible{outline:none!important}.modern-action-btn[data-v-5e12bf57]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-5e12bf57]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-5e12bf57]:hover:before{opacity:.08}.modern-action-btn[data-v-5e12bf57]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-5e12bf57]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-5e12bf57]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-5e12bf57]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-5e12bf57]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-5e12bf57]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-5e12bf57]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-5e12bf57]{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:none;border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-5e12bf57]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-5e12bf57]{height:34px;gap:2px;padding:2px;border-radius:9px}.modern-action-btn[data-v-5e12bf57]{width:28px;height:28px;border-radius:7px;font-size:11px}.upload-list-dashboard-title[data-v-5e12bf57]{height:34px;font-size:11px;padding:0 7px;border-radius:9px}.upload-list-dashboard-title .el-icon[data-v-5e12bf57]{font-size:13px;margin-right:1px}.upload-list-dashboard[data-v-5e12bf57]{padding:0 6px;gap:4px}.upload-list-dashboard-title[data-v-5e12bf57]{gap:3px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-5e12bf57]{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-2122c62a]{border:1px solid var(--glass-border);cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}#themeToggle[data-v-2122c62a]:hover{border-color:var(--glass-border-hover)}#themeToggle[data-v-2122c62a]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-2122c62a]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-2122c62a]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-2122c62a]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-2122c62a]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-2122c62a]{transform:rotate(40deg)}.theme_toggle_g[data-v-2122c62a]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-2122c62a],.icon-fade-leave-active[data-v-2122c62a]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-2122c62a]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-2122c62a]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-2122c62a],.icon-fade-leave-from[data-v-2122c62a]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-2122c62a]{display:inline-block}.container[data-v-06705292]{background:var(--bg-color);min-height:100vh}.rotate[data-v-06705292]{animation:spin-06705292 2s ease-in-out}.scale[data-v-06705292]{animation:scale-06705292 .5s ease-in-out}@keyframes spin-06705292{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-06705292{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-06705292{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-06705292{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-06705292{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-06705292]{display:inline-block}.mobile-only[data-v-06705292]{display:none}@media (max-width:768px){.desktop-only[data-v-06705292]{display:none!important}.mobile-only[data-v-06705292]{display:flex!important}}.toggle-dark-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}.more-dropdown[data-v-06705292]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.more-dropdown .more-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-method-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}@media (max-width:768px){.upload-method-button[data-v-06705292]{width:2rem;height:2rem}}.upload-method-icon[data-v-06705292]{outline:none}.more-button .svg-inline--fa[data-v-06705292],.upload-method-button .svg-inline--fa[data-v-06705292]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-06705292]{font-size:1.2em}.mobile-more-dropdown[data-v-06705292]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-06705292]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder-container[data-v-06705292]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-06705292]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-06705292],.upload-folder-container[data-v-06705292]{right:58px}}.upload-folder[data-v-06705292]{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-06705292]{width:200px}@media (max-width:768px){.upload-folder[data-v-06705292]{width:80px;height:2rem}.upload-folder.active[data-v-06705292]{width:120px}}.directory-tree-trigger[data-v-06705292]{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-06705292]:hover{border-color:var(--glass-border-hover);transform:scale(1.05)}@media (max-width:768px){.directory-tree-trigger[data-v-06705292]{width:2rem;height:2rem}.directory-tree-trigger .svg-inline--fa[data-v-06705292]{font-size:1.1em}}.upload-folder[data-v-06705292] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-06705292] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-06705292] .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-06705292] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-06705292] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.upload-folder[data-v-06705292] .el-input__wrapper.is-focus,.upload-folder[data-v-06705292] .el-input__wrapper:focus-within{border-color:var(--glass-border);box-shadow:var(--glass-shadow)!important}.quick-toolbar[data-v-06705292]{--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 var(--glass-border);background-color:var(--glass-bg);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}.directory-tree-trigger[data-v-06705292],.mobile-more-button[data-v-06705292],.more-dropdown .more-button[data-v-06705292],.quick-toolbar[data-v-06705292],.toggle-dark-button[data-v-06705292],.upload-method-button[data-v-06705292]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.quick-toolbar-button[data-v-06705292]{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-06705292]{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-06705292]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-06705292]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-06705292]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-06705292]{margin-top:4px}.quick-toolbar-icon[data-v-06705292]{font-size:16px}.quick-toolbar-toggle-icon[data-v-06705292]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-06705292]{transform:rotate(0deg)}.info-container[data-v-06705292]:hover,.quick-toolbar-button[data-v-06705292]: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-06705292]:hover{border-color:var(--glass-border-hover)}.quick-toolbar-button[data-v-06705292]:hover{transform:none}.toggle-dark-button[data-v-06705292]:hover,.upload-method-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder[data-v-06705292]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-06705292]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}@media (max-width:768px){.quick-toolbar[data-v-06705292]{--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-06705292]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-06705292]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-06705292]{gap:2px}.quick-toolbar-more[data-v-06705292]{margin-top:3px}.quick-toolbar-icon[data-v-06705292]{font-size:14px}}[data-v-06705292] .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-06705292]{display:flex;justify-content:center;margin-top:20px}.header[data-v-06705292]{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-06705292]{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-06705292 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-06705292]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-06705292]: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-06705292]:hover:after{width:80%}.main-title[data-v-06705292]{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-06705292]{opacity:0}.title[data-v-06705292]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-06705292]{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-06705292]{animation:crayonWrite-06705292 .82s steps(18) forwards,crayonScratch-06705292 .16s steps(2) .82s 3}@keyframes float-06705292{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-06705292{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-06705292{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-06705292]{font-size:1.55rem;letter-spacing:1px}.title[data-v-06705292]:hover{transform:scale(1.05)}}.upload-home[data-v-06705292]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:transparent}.upload[data-v-06705292]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-06705292]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-06705292]{padding-bottom:5px}.upload[data-v-06705292]{top:-3.8vh}}.footer[data-v-06705292]{height:6vh} \ No newline at end of file +.history-container[data-v-7da2f8c2]{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-7da2f8c2]: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-7da2f8c2]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-7da2f8c2]{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-7da2f8c2]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-7da2f8c2]{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-7da2f8c2]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-7da2f8c2]{display:flex;gap:10px}.header-right .el-button[data-v-7da2f8c2]{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-7da2f8c2]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-7da2f8c2]{background:#dc2626;color:#fff}.history-content[data-v-7da2f8c2]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-7da2f8c2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-7da2f8c2]{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-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-7da2f8c2]{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-7da2f8c2],.grid-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-7da2f8c2]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-7da2f8c2]{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-7da2f8c2]{opacity:1}.grid-actions[data-v-7da2f8c2]{display:flex;gap:15px}.grid-info[data-v-7da2f8c2]{padding:12px}.file-name[data-v-7da2f8c2]{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-7da2f8c2]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-7da2f8c2]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-7da2f8c2]{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-7da2f8c2]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-7da2f8c2]{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-7da2f8c2],.list-preview video[data-v-7da2f8c2]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-7da2f8c2]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-7da2f8c2]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-7da2f8c2]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-7da2f8c2]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-7da2f8c2]{display:flex;gap:8px}.empty-state[data-v-7da2f8c2]{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-7da2f8c2]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-7da2f8c2]::-webkit-scrollbar{width:8px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-7da2f8c2]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-7da2f8c2]{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-7da2f8c2]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-7da2f8c2]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-7da2f8c2]:last-child{border-left:2px solid transparent}.timeline-header[data-v-7da2f8c2]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-7da2f8c2]{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-7da2f8c2]{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-7da2f8c2]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-7da2f8c2]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-7da2f8c2],.no-more-hint[data-v-7da2f8c2]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-7da2f8c2]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-7da2f8c2]{padding:15px 20px}.header-left h2[data-v-7da2f8c2]{font-size:20px}.history-content[data-v-7da2f8c2]{padding:15px 20px}.grid-view[data-v-7da2f8c2]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-7da2f8c2]{height:120px}.list-meta[data-v-7da2f8c2]{display:none}.list-info[data-v-7da2f8c2]{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-ce6ff2ce]{display:inline-flex;align-items:center;justify-content:center;line-height:1}.channel-icon-wrapper[data-v-ce6ff2ce] svg,.channel-svg-icon[data-v-ce6ff2ce]{width:1em;height:1em;fill:currentColor}.channel-icon-wrapper.channel-brand-telegram[data-v-ce6ff2ce]{color:#229ed9}.channel-icon-wrapper.channel-brand-cfr2[data-v-ce6ff2ce]{color:#f38020}.channel-icon-wrapper.channel-brand-s3[data-v-ce6ff2ce]{color:#f90}.channel-icon-wrapper.channel-brand-discord[data-v-ce6ff2ce]{color:#5865f2}.channel-icon-wrapper.channel-brand-huggingface[data-v-ce6ff2ce]{color:#ff9d00}.channel-icon-wrapper.channel-brand-webdav[data-v-ce6ff2ce]{color:#14b8a6}.upload-settings-dialog .radio-card-group.compact{gap:8px}.upload-settings-dialog .radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.upload-settings-dialog .radio-card-group.compact .channel-icon{width:18px;font-size:18px;text-align:center;flex-shrink:0}.upload-settings-dialog .slider-item{flex-direction:column;align-items:flex-start;gap:12px}.upload-settings-dialog .slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.upload-settings-dialog .slider-wrapper .el-slider{flex:1;min-width:0}.upload-settings-dialog .slider-input{width:96px!important;flex-shrink:0}.upload-settings-dialog .slider-input .el-input__inner{text-align:center}.upload-settings-dialog .slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.upload-settings-dialog .slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.upload-settings-dialog .setting-item .radio-card-group.compact{width:100%}.upload-settings-dialog .radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.upload-settings-dialog .radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.upload-settings-dialog .radio-card-group.compact .radio-card .el-radio__label{justify-content:center}.upload-settings-dialog .slider-wrapper{gap:8px}}.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-645a7810]{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-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-645a7810]:hover{border-color:var(--upload-list-item-hover-border,rgba(37,99,235,.25));box-shadow:none}.upload-list-item-content[data-v-645a7810]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-645a7810]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-645a7810]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-645a7810]:last-child{margin-bottom:0}.upload-list-item-url[data-v-645a7810]{display:flex;flex-direction:column}.file-icon[data-v-645a7810]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-645a7810]{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-645a7810]: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-645a7810]{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-645a7810]{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-645a7810] .el-progress{--el-color-primary:var(--primary-color)}.upload-list-item-progress[data-v-645a7810] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .el-progress-bar__inner{border-radius:8px;background:var(--primary-color)!important;box-shadow:none;position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .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-645a7810 1s linear infinite}.upload-list-item-progress[data-v-645a7810] .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-645a7810] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-645a7810] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-645a7810] .el-progress--exception .el-progress-bar__inner{background:#dc2626!important;background-size:200% 100%;box-shadow:none;animation:progressPulse-645a7810 1s ease-in-out infinite}.upload-list-item-progress[data-v-645a7810] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-645a7810{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-645a7810{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-645a7810] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-645a7810] .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-645a7810] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-645a7810] .el-input__wrapper:hover{box-shadow:none;border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-645a7810] .el-input__wrapper.is-focus{box-shadow:none;border-color:var(--el-color-primary)}.upload-list-item-url[data-v-645a7810] .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-645a7810 2s infinite;z-index:0}@keyframes shimmer-645a7810{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-645a7810] .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-645a7810] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-645a7810] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-645a7810] .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-645a7810] .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-645a7810] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-645a7810] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-645a7810] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-645a7810 2s ease-in-out infinite}.upload-list-item-url[data-v-645a7810] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-645a7810{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-645a7810]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:10px;background:var(--upload-action-btn-bg);color:var(--upload-action-btn-color);box-shadow:var(--upload-action-btn-shadow);cursor:pointer;transition:background-color .22s ease,color .22s ease,transform .22s ease;font-size:16px;position:relative;overflow:hidden;margin:4px 0;outline:none}.modern-file-action-btn[data-v-645a7810]:before{content:"";position:absolute;inset:2px;border-radius:8px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-file-action-btn[data-v-645a7810]:hover{background:var(--upload-action-btn-hover-bg)}.modern-file-action-btn[data-v-645a7810]:hover:before{opacity:.08}.modern-file-action-btn[data-v-645a7810]:active{transform:scale(.96)}.modern-file-action-btn-primary[data-v-645a7810]{color:var(--upload-action-copy-color)}.modern-file-action-btn-danger[data-v-645a7810]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-file-action-btn-danger[data-v-645a7810]:hover{background:var(--upload-action-danger-hover-bg)}@media (max-width:768px){.upload-list-item[data-v-645a7810]{margin:5px 6px;padding:7px 8px;border-radius:12px}.upload-list-item-content[data-v-645a7810]{margin-left:2px}.upload-list-item-action[data-v-645a7810]{gap:3px}.upload-list-item-url-row[data-v-645a7810]{width:42vw;flex-direction:column;gap:4px;margin-bottom:4px}.upload-list-item-progress[data-v-645a7810]{width:32vw;margin-top:5px;padding:2px 5px;border-radius:9px}.upload-list-item-progress[data-v-645a7810] .el-progress-bar__outer{height:6px!important}.upload-list-item-url[data-v-645a7810] .el-input__wrapper{border-radius:7px}.upload-list-item-url[data-v-645a7810] .el-input__inner{font-size:10px;padding-left:8px}.upload-list-item-url[data-v-645a7810] .el-input-group__prepend{font-size:9px;padding:0 6px;border-radius:7px 0 0 7px}.modern-file-action-btn[data-v-645a7810]{width:26px;height:26px;margin:2px 0;border-radius:8px;font-size:12px}.upload-list-item-name-wrapper[data-v-645a7810]{padding:3px 8px;margin-bottom:5px;border-radius:7px}.upload-list-item-name[data-v-645a7810]{font-size:11px;width:32vw}}.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-2f568ddd{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-2f568ddd]{--upload-card-height:45vh;--upload-card-busy-height:17vh;--upload-list-height:7vh;--upload-list-inner-height:var(--upload-list-height);--upload-list-busy-height:calc(var(--upload-card-height) - var(--upload-card-busy-height) + var(--upload-list-height));--upload-list-gap:10px;--upload-list-radius:15px;--upload-card-vertical-padding:40px;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;height:calc(var(--upload-card-height) + var(--upload-list-height) + var(--upload-list-gap) + var(--upload-card-vertical-padding))}.upload-list-card[data-v-2f568ddd]{width:55vw;height:var(--upload-list-height);margin-top:var(--upload-list-gap);display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--upload-list-radius);background-color:var(--glass-bg)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-2f568ddd] .el-card__body{padding:0;width:100%;height:100%;overflow:hidden}.upload-list-container[data-v-2f568ddd]{width:100%;height:100%;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-2f568ddd]{width:70vw}}.upload-list-card.upload-list-busy[data-v-2f568ddd]{height:var(--upload-list-busy-height)}.upload-list-card[data-v-2f568ddd]:not(.upload-list-busy) .el-scrollbar__view{height:100%}.upload-card-wrapper[data-v-2f568ddd]{position:relative;overflow:visible}.folder-upload-input[data-v-2f568ddd]{display:none}.folder-upload-icon-button[data-v-2f568ddd]{position:absolute;right:18px;bottom:18px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;box-sizing:border-box;padding:0;border:1px solid var(--glass-border);border-radius:9px;background:var(--glass-bg);color:var(--el-text-color-secondary);font-size:11px;line-height:1;cursor:pointer;transition:color .2s ease,background-color .2s ease,border-color .2s ease}.folder-upload-icon-button[data-v-2f568ddd]:hover{color:var(--primary-color-accent);border-color:color-mix(in srgb,var(--primary-color) 48%,var(--glass-border));background:color-mix(in srgb,var(--primary-color) 14%,var(--glass-bg))}.folder-upload-icon-button[data-v-2f568ddd]:focus-visible{outline:none;color:var(--primary-color-accent);border-color:color-mix(in srgb,var(--primary-color) 60%,var(--glass-border));background:color-mix(in srgb,var(--primary-color) 14%,var(--glass-bg))}.folder-upload-icon-button.upload-list-busy[data-v-2f568ddd]{right:12px;bottom:12px;width:26px;height:26px;border-radius:8px;font-size:10px}@media (max-width:768px){.folder-upload-icon-button[data-v-2f568ddd]{right:10px;bottom:10px;width:26px;height:26px;border-radius:8px;font-size:10px}}.upload-card-glow[data-v-2f568ddd]{position:absolute;width:200px;height:200px;border-radius:50%;background:var(--upload-card-hover-glow-bg);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-2f568ddd]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-2f568ddd]{width:70vw}}.upload-card-busy[data-v-2f568ddd] .el-upload-dragger{height:var(--upload-card-busy-height)}[data-v-2f568ddd] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);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);transition:height .3s ease,opacity .25s ease,border-color .25s ease,box-shadow .25s ease,background-color .25s ease}[data-v-2f568ddd] .el-upload:focus .el-upload-dragger{border-color:var(--glass-border-hover)}[data-v-2f568ddd] .el-upload-dragger.is-dragover,[data-v-2f568ddd] .el-upload-dragger:hover{opacity:.7;box-shadow:var(--glass-shadow)}.is-uploading[data-v-2f568ddd] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-2f568ddd]{position:relative;background:none}.upload-card.is-uploading[data-v-2f568ddd]: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(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-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-2f568ddd 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-2f568ddd]{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-2f568ddd]{font-size:small}}.el-upload__text.upload-list-busy[data-v-2f568ddd]{font-size:small}.el-icon--upload[data-v-2f568ddd]{font-size:100px;transition:font-size .3s ease;color:#60a5fa}html.dark .el-icon--upload[data-v-2f568ddd]{color:#6b6b73}.el-upload__text[data-v-2f568ddd] em{color:#1d4ed8}html.dark .el-upload__text[data-v-2f568ddd] em{color:#93c5fd}.el-icon--upload.upload-list-busy[data-v-2f568ddd]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-2f568ddd]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-2f568ddd]{font-size:30px}}.paste-card[data-v-2f568ddd]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:var(--upload-card-height);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-2f568ddd]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-2f568ddd]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-2f568ddd]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--upload-card-effect-color,#2563eb) 60deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 90deg,transparent 120deg,transparent 180deg,var(--upload-card-effect-highlight-color,color-mix(in srgb,var(--upload-card-effect-color,#2563eb) 70%,#fff)) 210deg,var(--upload-card-effect-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-2f568ddd 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-2f568ddd] .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-2f568ddd]{height:var(--upload-card-busy-height)}.upload-card-textarea[data-v-2f568ddd]{width:50vw;height:70%;border-radius:16px;background:color-mix(in srgb,var(--primary-color) 4%,var(--glass-bg));border:1px solid var(--glass-border);box-shadow:none;transition:background-color .22s ease,border-color .22s ease,box-shadow .22s ease;box-sizing:border-box;display:flex;position:relative;overflow:hidden}.upload-card-busy .upload-card-textarea[data-v-2f568ddd]{height:50%}.upload-card-textarea[data-v-2f568ddd]:hover{background:color-mix(in srgb,var(--primary-color) 6%,var(--glass-bg));border-color:var(--glass-border-hover)}.upload-card-textarea[data-v-2f568ddd]:focus-within{background:color-mix(in srgb,var(--primary-color) 7%,var(--glass-bg));border-color:color-mix(in srgb,var(--primary-color) 45%,var(--glass-border));box-shadow:none}.upload-card-textarea[data-v-2f568ddd] .el-textarea__inner{border-radius:16px;background:transparent;transition:color .2s ease,background-color .2s ease;resize:none;border:none;box-shadow:none!important;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}.upload-card-textarea[data-v-2f568ddd] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-2f568ddd] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}.upload-card-textarea[data-v-2f568ddd] .el-textarea__inner:focus{background:transparent;box-shadow:none!important}.upload-card-textarea[data-v-2f568ddd] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-2f568ddd] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-2f568ddd] ::-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-2f568ddd] ::-webkit-scrollbar-thumb:hover{background:rgba(37,99,235,.7)}.paste-card-actions[data-v-2f568ddd]{display:flex;justify-content:space-between;align-items:center;width:50vw;gap:12px;margin-top:16px}.paste-card-upload-button[data-v-2f568ddd]{min-width:92px;height:38px;border-radius:10px!important;font-weight:600;font-size:14px;letter-spacing:.04em;color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 10%,transparent)!important;border:1px solid color-mix(in srgb,var(--primary-color) 36%,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-2f568ddd]:hover{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;transform:translateY(-1px);box-shadow:none}.paste-card-upload-button[data-v-2f568ddd]:focus-visible{color:var(--primary-color-accent)!important;background:color-mix(in srgb,var(--primary-color) 14%,transparent)!important;border-color:color-mix(in srgb,var(--primary-color) 52%,var(--glass-border))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 14%,transparent)!important}.paste-card-upload-button[data-v-2f568ddd]:active{transform:translateY(0);background:color-mix(in srgb,var(--primary-color) 18%,transparent)!important}.upload-card-busy .paste-card-upload-button[data-v-2f568ddd]{min-width:72px;height:32px;border-radius:8px!important;font-size:13px;letter-spacing:.02em}.upload-card-busy .paste-card-actions[data-v-2f568ddd]{margin-top:10px}.paste-card-method-group[data-v-2f568ddd]{position:relative;display:inline-flex;align-items:center;width:158px;height:38px;box-sizing:border-box;gap:2px;padding:3px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:10px;overflow:hidden}.paste-card-method-group[data-v-2f568ddd]:before{content:"";position:absolute;top:3px;left:3px;width:calc(50% - 4px);height:calc(100% - 6px);border-radius:7px;background:color-mix(in srgb,var(--primary-color) 14%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary-color) 42%,var(--glass-border)) inset;transform:translateX(0);transition:transform .22s cubic-bezier(.4,0,.2,1);pointer-events:none}.paste-card-method-group.is-external[data-v-2f568ddd]:before{transform:translateX(calc(100% + 2px))}.paste-card-method-button[data-v-2f568ddd]{position:relative;z-index:1;display:inline-flex;flex:1 1 0;align-items:center;justify-content:center;min-width:0;height:30px;box-sizing:border-box;padding:0 14px;border:none;border-radius:7px;background:transparent;font-weight:500;font-size:13px;line-height:1;color:var(--el-text-color-secondary);cursor:pointer;transition:color .2s ease}.paste-card-method-button.is-active[data-v-2f568ddd],.paste-card-method-button[data-v-2f568ddd]:hover{color:var(--primary-color-accent)}.paste-card-method-button[data-v-2f568ddd]:focus-visible{outline:none;color:var(--primary-color-accent)}@media (max-width:768px){.paste-card[data-v-2f568ddd]{height:var(--upload-card-height);min-height:0;max-height:var(--upload-card-height);padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-2f568ddd]{height:var(--upload-card-busy-height);min-height:0;max-height:var(--upload-card-busy-height);padding:5px}.upload-card-textarea[data-v-2f568ddd]{margin-top:4px;width:calc(100% - 4px)!important;min-height:0;flex-shrink:1}.upload-card-textarea[data-v-2f568ddd] .el-textarea__inner{height:100%;min-height:0!important;box-sizing:border-box;border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-2f568ddd]{flex:0 0 auto;width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-2f568ddd]{letter-spacing:.02em;padding:0 10px}.paste-card-upload-button[data-v-2f568ddd],.upload-card-busy .paste-card-upload-button[data-v-2f568ddd]{height:28px;min-width:56px;border-radius:7px!important;font-size:11px}.upload-card-busy .paste-card-actions[data-v-2f568ddd]{margin-top:6px}.paste-card-method-group[data-v-2f568ddd]{width:112px;height:28px;padding:2px;border-radius:8px}.paste-card-method-group[data-v-2f568ddd]:before{top:2px;left:2px;width:calc(50% - 3px);height:calc(100% - 4px);border-radius:6px}.paste-card-method-button[data-v-2f568ddd]{height:22px;padding:0 8px;font-size:10px;border-radius:6px}}.upload-list-dashboard[data-v-2f568ddd]{display:flex;justify-content:space-between;align-items:center;height:var(--upload-list-inner-height);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:var(--upload-list-radius);box-shadow:var(--glass-shadow);opacity:.7}.upload-list-card:not(.upload-list-busy) .upload-list-dashboard[data-v-2f568ddd]{height:100%}[data-v-2f568ddd] .el-upload-dragger{position:relative;overflow:hidden}[data-v-2f568ddd] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:200px 200px}[data-v-2f568ddd] .el-upload-dragger:after,[data-v-2f568ddd] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-2f568ddd] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--upload-card-effect-color,#2563eb) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-2f568ddd]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-2f568ddd 60s linear infinite}.upload-card[data-v-2f568ddd]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-2f568ddd 40s linear infinite,starPulse-2f568ddd 4s ease-in-out infinite}@keyframes starScroll-2f568ddd{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-2f568ddd{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-2f568ddd]{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-2f568ddd]:hover{background:var(--glass-bg);border-color:var(--glass-border);box-shadow:var(--glass-shadow)}.modern-action-btn[data-v-2f568ddd]{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-2f568ddd]:focus,.modern-action-btn[data-v-2f568ddd]:focus-visible{outline:none!important}.modern-action-btn[data-v-2f568ddd]:before{content:"";position:absolute;inset:2px;border-radius:11px;background:currentColor;opacity:0;transition:opacity .22s ease}.modern-action-btn[data-v-2f568ddd]:hover{background:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-hover-shadow)}.modern-action-btn[data-v-2f568ddd]:hover:before{opacity:.08}.modern-action-btn[data-v-2f568ddd]:active{transform:translateY(0) scale(.97);box-shadow:var(--upload-action-btn-active-shadow)}.modern-action-btn-copy[data-v-2f568ddd]{color:var(--upload-action-copy-color)}.modern-action-btn-retry[data-v-2f568ddd]{color:var(--upload-action-retry-color)}.modern-action-btn-danger[data-v-2f568ddd]{color:var(--upload-action-danger-color);background:var(--upload-action-danger-bg)}.modern-action-btn-danger[data-v-2f568ddd]:hover{background:var(--upload-action-danger-hover-bg);box-shadow:var(--upload-action-danger-hover-shadow)}.modern-dropdown-item-content[data-v-2f568ddd]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-2f568ddd]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-2f568ddd]{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:none;border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-2f568ddd]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-2f568ddd]{height:34px;gap:2px;padding:2px;border-radius:9px}.modern-action-btn[data-v-2f568ddd]{width:28px;height:28px;border-radius:7px;font-size:11px}.upload-list-dashboard-title[data-v-2f568ddd]{height:34px;font-size:11px;padding:0 7px;border-radius:9px}.upload-list-dashboard-title .el-icon[data-v-2f568ddd]{font-size:13px;margin-right:1px}.upload-list-dashboard[data-v-2f568ddd]{padding:0 6px;gap:4px}.upload-list-dashboard-title[data-v-2f568ddd]{gap:3px;min-width:0;flex-shrink:1;overflow:hidden}.upload-list-dashboard-action[data-v-2f568ddd]{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-2122c62a]{border:1px solid var(--glass-border);cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:12px;background-color:var(--glass-bg);box-shadow:none;transition:background-color .25s ease,border-color .25s ease,transform .25s ease}#themeToggle[data-v-2122c62a]:hover{border-color:var(--glass-border-hover)}#themeToggle[data-v-2122c62a]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}@media (max-width:768px){#themeToggle[data-v-2122c62a]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-2122c62a]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-2122c62a]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-2122c62a]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-2122c62a]{transform:rotate(40deg)}.theme_toggle_g[data-v-2122c62a]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-2122c62a],.icon-fade-leave-active[data-v-2122c62a]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-2122c62a]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-2122c62a]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-2122c62a],.icon-fade-leave-from[data-v-2122c62a]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-2122c62a]{display:inline-block}.container[data-v-06705292]{background:var(--bg-color);min-height:100vh}.rotate[data-v-06705292]{animation:spin-06705292 2s ease-in-out}.scale[data-v-06705292]{animation:scale-06705292 .5s ease-in-out}@keyframes spin-06705292{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-06705292{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-06705292{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-06705292{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-06705292{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-06705292]{display:inline-block}.mobile-only[data-v-06705292]{display:none}@media (max-width:768px){.desktop-only[data-v-06705292]{display:none!important}.mobile-only[data-v-06705292]{display:flex!important}}.toggle-dark-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;border-radius:12px;position:fixed;top:30px;right:80px;padding:0}.more-dropdown[data-v-06705292]{position:fixed;top:30px;right:30px;z-index:100}.more-dropdown .more-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.more-dropdown .more-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-method-button[data-v-06705292]{width:2.5rem;height:2.5rem;box-sizing:border-box;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;position:fixed;top:30px;right:130px;outline:none;padding:0}@media (max-width:768px){.upload-method-button[data-v-06705292]{width:2rem;height:2rem}}.upload-method-icon[data-v-06705292]{outline:none}.more-button .svg-inline--fa[data-v-06705292],.upload-method-button .svg-inline--fa[data-v-06705292]{font-size:1.5em}.directory-tree-trigger .svg-inline--fa[data-v-06705292]{font-size:1.2em}.mobile-more-dropdown[data-v-06705292]{position:fixed;top:30px;right:18px;z-index:100}.mobile-more-button[data-v-06705292]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:1px solid var(--glass-border);transition:background-color .25s ease,border-color .25s ease,transform .25s ease;background-color:var(--glass-bg);box-shadow:none;color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder-container[data-v-06705292]{display:flex;align-items:center;position:fixed;top:30px;right:180px;z-index:100}.upload-folder-container.no-announcement[data-v-06705292]{right:180px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-06705292],.upload-folder-container[data-v-06705292]{right:58px}}.upload-folder[data-v-06705292]{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-06705292]{width:200px}@media (max-width:768px){.upload-folder[data-v-06705292]{width:80px;height:2rem}.upload-folder.active[data-v-06705292]{width:120px}}.directory-tree-trigger[data-v-06705292]{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-06705292]:hover{border-color:var(--glass-border-hover);transform:scale(1.05)}@media (max-width:768px){.directory-tree-trigger[data-v-06705292]{width:2rem;height:2rem}.directory-tree-trigger .svg-inline--fa[data-v-06705292]{font-size:1.1em}}.upload-folder[data-v-06705292] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-06705292] .el-input{height:100%;box-sizing:border-box}.upload-folder[data-v-06705292] .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-06705292] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-06705292] .el-input__wrapper:hover{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}.upload-folder[data-v-06705292] .el-input__wrapper.is-focus,.upload-folder[data-v-06705292] .el-input__wrapper:focus-within{border-color:var(--glass-border);box-shadow:var(--glass-shadow)!important}.quick-toolbar[data-v-06705292]{--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 var(--glass-border);background-color:var(--glass-bg);box-shadow:none;transition:background-color .24s ease,border-color .24s ease}.directory-tree-trigger[data-v-06705292],.mobile-more-button[data-v-06705292],.more-dropdown .more-button[data-v-06705292],.quick-toolbar[data-v-06705292],.toggle-dark-button[data-v-06705292],.upload-method-button[data-v-06705292]{backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.quick-toolbar-button[data-v-06705292]{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-06705292]{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-06705292]{grid-template-rows:1fr;margin-bottom:4px;opacity:1;pointer-events:auto;transform:translateY(0)}.quick-toolbar-actions-inner[data-v-06705292]{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:0;overflow:hidden}.quick-toolbar-more.is-active[data-v-06705292]{background-color:var(--upload-action-btn-hover-bg);box-shadow:var(--upload-action-btn-shadow)}.quick-toolbar-more[data-v-06705292]{margin-top:4px}.quick-toolbar-icon[data-v-06705292]{font-size:16px}.quick-toolbar-toggle-icon[data-v-06705292]{transform:rotate(180deg);transition:transform .32s ease}.quick-toolbar-more.is-active .quick-toolbar-toggle-icon[data-v-06705292]{transform:rotate(0deg)}.info-container[data-v-06705292]:hover,.quick-toolbar-button[data-v-06705292]: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-06705292]:hover{border-color:var(--glass-border-hover)}.quick-toolbar-button[data-v-06705292]:hover{transform:none}.toggle-dark-button[data-v-06705292]:hover,.upload-method-button[data-v-06705292]:hover{transform:scale(1.05);border-color:var(--glass-border-hover)}.upload-folder[data-v-06705292]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-fill-color-blank) 85%,transparent);border-color:var(--glass-border-hover)}html.dark .upload-folder[data-v-06705292]:hover .el-input__wrapper{background-color:color-mix(in srgb,var(--el-bg-color) 88%,transparent);border-color:var(--glass-border-hover)}@media (max-width:768px){.quick-toolbar[data-v-06705292]{--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-06705292]{margin-bottom:0}.quick-toolbar.is-expanded .quick-toolbar-actions[data-v-06705292]{margin-bottom:3px}.quick-toolbar-actions-inner[data-v-06705292]{gap:2px}.quick-toolbar-more[data-v-06705292]{margin-top:3px}.quick-toolbar-icon[data-v-06705292]{font-size:14px}}[data-v-06705292] .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-06705292]{display:flex;justify-content:center;margin-top:20px}.header[data-v-06705292]{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-06705292]{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-06705292 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-06705292]:hover{transform:scale(1.08);filter:drop-shadow(0 0 20px var(--upload-title-hover-glow))}.title[data-v-06705292]: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-06705292]:hover:after{width:80%}.main-title[data-v-06705292]{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-06705292]{opacity:0}.title[data-v-06705292]:hover{color:transparent;text-shadow:none}.title-crayon-text[data-v-06705292]{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-06705292]{animation:crayonWrite-06705292 .82s steps(18) forwards,crayonScratch-06705292 .16s steps(2) .82s 3}@keyframes float-06705292{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes crayonWrite-06705292{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-06705292{0%,to{transform:translateX(-50%) rotate(-.8deg)}50%{transform:translateX(calc(-50% + 1px)) rotate(-.45deg)}}@media (max-width:768px){.title[data-v-06705292]{font-size:1.55rem;letter-spacing:1px}.title[data-v-06705292]:hover{transform:scale(1.05)}}.upload-home[data-v-06705292]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:transparent}.upload[data-v-06705292]{margin-bottom:5px;position:relative;top:-3vh}@media (max-width:768px){.header[data-v-06705292]{padding:8px 15px 4px;top:-2.5vh}.title[data-v-06705292]{padding-bottom:5px}.upload[data-v-06705292]{top:-3.8vh}}.footer[data-v-06705292]{height:6vh} \ No newline at end of file diff --git a/frontend-dist/css/927.b1a356fd.css.gz b/frontend-dist/css/807.413b2fce.css.gz similarity index 56% rename from frontend-dist/css/927.b1a356fd.css.gz rename to frontend-dist/css/807.413b2fce.css.gz index 0561fe56f8a4a982c8c222503efe6e3d28a40edf..1bc2c0e5a09b10daad19496ebf699c3b9454a199 100644 GIT binary patch delta 5010 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 ce!Shnebe+hL}<|R`|IOiS}Q|QX0zT=wv-p`(~ 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 DNA#TM diff --git a/frontend-dist/index.html b/frontend-dist/index.html index 23144d9f..000311a2 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 728c1fed9e1da502f21730227cf74f959e683542..5eace6f81b29e218063e45f3bbb43ed3e0564444 100644 GIT binary patch delta 533 zcmV+w0_y#t1fm3x7=L!@(gi7rR3RkF2~;7tA;+F1?%JMUkF(_8qfNG@+X?{}OV673 z=Hq!>zR;w28W4JRwl0q+Sn0b;h`Q`i>bi8u5>zikM6N{QHhUvZw>|Ta;g4j-N_@+{ zTxajd4U$b`QGg=P=(!R%?<>?D-jlp^Sc%c#VW7Z|;toc0Uw>&FjlygOE8`6tX|t%L z#cH#1@~3ghJ>V2E%s@64D^II?*{n5ODH<_|y0pgcA)u{ZnZIQ+Ou)*@(Ji!xrna!pma0ESDBRV~gR~a*IJg45|{vT`W|e{5~7eYYH*HdbPd0 z+^(DaE{eJ=7V6(5;wnHJtc;Za+J5rAkZK8LFe$vqKtULU>KNYe~eF90 XZN|DRmJVu*`H%PoDXB4vGXwwtP6-4K delta 532 zcmV+v0_**v1fc|w7=N~OX{i)Pst^+81VRXI$gwAhyS69T<1G8{(I(r{ZH0h~rDx51 z^YJ{cUl`K79}x!juBi_vI2C#+L{kr_OjCPg1$t01Axn|DE8d9X?Z7-1_#@j%if_f2 zo8m3`QL$|u3eXf7150uHPNM1Yo)nZvDJF}%ks?2e+gZbdG=Df*jl~RBHdwaG6-g_H z@_gmhPwTUPz&T-@fodJfK&yM%qO&YDO&CQ}I~%qT(Me%71p!0EPKqkAVyi2U#;VFu zPvsc;lW;YT4hyENhvGk}UZw57a6przD8Xyp@-2a?kM_G#Vzi46is?2w>s*rPE=N4z3Lx9?I;^aOi?{` zRAnA0J`?_AMN_k7hs{ahb+ug9ON(Hz!+2=9!zds{Ek$*gDm~<|EhY?xVk$3RZ7wc0 z>$bd0qN%He`ZozRj^)+0zQ)(xAB4 zbE5OLHh8u96Q^31swJ~;>Oc=2aHP;TU-2v=B#LnlZDvUG#J*eK54i3r!Y7MLTkN5=|^%FcZ1ONb$N&ajA diff --git a/frontend-dist/js/807.0a4d199f.js b/frontend-dist/js/807.0a4d199f.js new file mode 100644 index 00000000..b00fe0f5 --- /dev/null +++ b/frontend-dist/js/807.0a4d199f.js @@ -0,0 +1,2 @@ +(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[807],{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),l=o(24232);const s=["href","target"],i=["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,l.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,l.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,i)],10,s)}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)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},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 l=t[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,o),l.l=!0,l.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 l in e)o.d(a,l,function(t){return e[t]}.bind(null,l));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 l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return i}),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 f}),o.d(t,"urltoImage",function(){return g}),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 s=function(e,t,o,a){return new(o||(o=Promise))(function(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,n)}r((a=a.apply(e,t||[])).next())})};function i(e,t=.92,o=a.JPEG){return s(this,void 0,void 0,function*(){return l(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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 s=atob(o[1]);let i=s.length;const n=new Uint8Array(i);for(;i--;)n[i]=s.charCodeAt(i);return l(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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"),l=a.getContext("2d");let s,i;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;i=e.width*t,s=e.height*t}else i=o.width||o.height*e.width/e.height||e.width,s=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=i,a.width=s):(a.height=s,a.width=i),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;case 2:l.translate(a.width,0),l.scale(-1,1),l.drawImage(e,0,0,a.width,a.height);break;case 4:l.translate(a.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:l.translate(a.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 7:l.translate(a.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;default:l.drawImage(e,0,0,a.width,a.height)}return a})}function f(e){return fetch(e).then(e=>e.blob())}function g(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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 s=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;l(t.type)&&(n=t.type,s=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield i(u,t.quality,n),f=yield d(h,s);return f.size>e.size?e:f})}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,s=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield i(g,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-s)-Math.abs(.75*t.length-s))[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)},17879:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),l=o(45130),s=o(24232);const i={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)(l.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,s.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",i,[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-2122c62a"]]);var m=h},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),l=(o(85331),o(30694),o(49385)),s=(o(37952),o(30650)),i=(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"},f={class:"node-label"},g={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=i.qk,$=s.Vc,S=l.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",f,(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",g,[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)},37807:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return Bo}});var a=o(78507),l=(o(85331),o(213),o(80047)),s=(o(99648),o(56768)),i=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"},f=["src"],g=["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"},_=["title"],x=["title"],A={class:"list-meta"},M={class:"upload-time"},R={class:"list-actions"},D={key:0,class:"load-more-container"},E={key:0,class:"loading-indicator"},I={key:1,class:"load-more-hint"},P={key:1,class:"no-more-hint"},N={key:1,class:"empty-state"};function z(e,t,o,z,W,V){const B=(0,s.g2)("font-awesome-icon"),H=l.S2,Q=a.R7;return(0,s.uX)(),(0,s.CE)("div",{class:(0,i.C4)(["history-container",{active:o.show}])},[(0,s.Lk)("div",n,[(0,s.Lk)("div",r,[(0,s.Lk)("h2",null,(0,i.v_)(e.$t("uploadHistory.title")),1),(0,s.Lk)("span",d,(0,i.v_)(e.$t("uploadHistory.totalRecords",{count:W.totalCount})),1)]),(0,s.Lk)("div",c,[(0,s.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(H,{circle:"",onClick:V.toggleViewMode},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"grid"===W.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,s.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(H,{circle:"",type:"danger",onClick:V.clearHistory},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,s.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"times"})]),_:1})])]),W.historyList.length>0?((0,s.uX)(),(0,s.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>V.handleScroll&&V.handleScroll(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(V.groupedHistory,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.date,class:"history-group"},[(0,s.Lk)("div",u,[t[4]||(t[4]=(0,s.Lk)("div",{class:"timeline-dot"},null,-1)),(0,s.Lk)("span",p,(0,i.v_)(e.date),1)]),"grid"===W.viewMode?((0,s.uX)(),(0,s.CE)("div",h,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.items,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.time,class:"grid-item"},[(0,s.Lk)("div",m,[V.isImage(e.name)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,f)):V.isVideo(e.name)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,s.uX)(),(0,s.CE)("div",y,[(0,s.bF)(B,{icon:"file",class:"file-icon"})])),(0,s.Lk)("div",b,[(0,s.Lk)("div",k,[(0,s.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,s.Lk)("div",v,[(0,s.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,C),(0,s.Lk)("div",w,(0,i.v_)(V.formatTime(e.time)),1)])]))),128))])):((0,s.uX)(),(0,s.CE)("div",F,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.items,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.time,class:"list-item"},[(0,s.Lk)("div",L,[V.isImage(e.name)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,U)):V.isVideo(e.name)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,s.uX)(),(0,s.CE)("div",S,[(0,s.bF)(B,{icon:"file"})]))]),(0,s.Lk)("div",T,[(0,s.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,_),(0,s.Lk)("div",{class:"file-url",title:e.url},(0,i.v_)(e.url),9,x)]),(0,s.Lk)("div",A,[(0,s.Lk)("div",M,(0,i.v_)(V.formatTime(e.time)),1)]),(0,s.Lk)("div",R,[(0,s.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),V.hasMore?((0,s.uX)(),(0,s.CE)("div",D,[W.loadingMore?((0,s.uX)(),(0,s.CE)("div",E,[(0,s.bF)(B,{icon:"spinner",spin:""}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadHistory.loading")),1)])):((0,s.uX)(),(0,s.CE)("div",I,(0,i.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):W.historyList.length>0?((0,s.uX)(),(0,s.CE)("div",P,(0,i.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,s.Q3)("",!0)],544)):((0,s.uX)(),(0,s.CE)("div",N,[(0,s.bF)(B,{icon:"history",class:"empty-icon"}),(0,s.Lk)("p",null,(0,i.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var W={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,l=t.clientHeight;a-o-l<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"),l=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${l} ${s}:${i}:${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)}}},V=o(71241);const B=(0,V.A)(W,[["render",z],["__scopeId","data-v-7da2f8c2"]]);var H=B,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),j=(o(50333),o(74757)),O=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(97769));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},le={class:"setting-label"},se={key:0,class:"setting-item"},ie={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"},fe={class:"dialog-section"},ge={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"},_e={class:"slider-wrapper"},xe={class:"slider-input-wrapper"},Ae={key:0,class:"dialog-section"},Me={class:"section-header"},Re={class:"section-title"},De={class:"section-content"},Ee={class:"setting-item"},Ie={class:"setting-label"},Pe={class:"dialog-action"};function Ne(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,s.g2)("font-awesome-icon"),m=a.R7,f=K.P9,g=K.AV,y=G.WK,b=O.qi,k=j.B8,v=q.lq,C=l.S2,w=X.kZ;return(0,s.uX)(),(0,s.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 settings-dialog-scope upload-settings-dialog"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",Z,[(0,s.Lk)("div",ee,[(0,s.Lk)("span",te,(0,i.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,s.Lk)("div",oe,[(0,s.Lk)("div",ae,[(0,s.Lk)("span",le,(0,i.v_)(e.$t("uploadSettings.channelType")),1),(0,s.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,s.k6)(()=>[(0,s.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"telegram",class:"channel-icon"}),t[13]||(t[13]=(0,s.Lk)("span",null,"TG",-1))]),_:1}),(0,s.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"cfr2",class:"channel-icon"}),t[14]||(t[14]=(0,s.Lk)("span",null,"R2",-1))]),_:1}),(0,s.bF)(u,{label:"s3",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"s3",class:"channel-icon"}),t[15]||(t[15]=(0,s.Lk)("span",null,"S3",-1))]),_:1}),(0,s.bF)(u,{label:"discord",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"discord",class:"channel-icon"}),t[16]||(t[16]=(0,s.Lk)("span",null,"DC",-1))]),_:1}),(0,s.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"huggingface",class:"channel-icon"}),t[17]||(t[17]=(0,s.Lk)("span",null,"HF",-1))]),_:1}),(0,s.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"webdav",class:"channel-icon"}),t[18]||(t[18]=(0,s.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,s.uX)(),(0,s.CE)("div",se,[(0,s.Lk)("span",ie,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(g,{"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,s.k6)(()=>[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(o.currentChannelList,e=>((0,s.uX)(),(0,s.Wv)(f,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,s.Q3)("",!0),(0,s.Lk)("div",ne,[(0,s.Lk)("span",re,(0,i.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,s.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,s.Lk)("div",de,[(0,s.Lk)("span",ce,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,s.Lk)("div",ue,[(0,s.Lk)("div",pe,[(0,s.Lk)("span",he,(0,i.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,s.Lk)("div",me,[(0,s.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,s.k6)(()=>[(0,s.bF)(u,{label:"default",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"cog",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,s.bF)(u,{label:"index",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,s.bF)(u,{label:"origin",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,s.bF)(u,{label:"short",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,s.Lk)("div",fe,[(0,s.Lk)("div",ge,[(0,s.Lk)("span",ye,(0,i.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,s.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",be,[(0,s.Lk)("div",ke,[(0,s.Lk)("span",ve,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,s.Lk)("div",Ce,[(0,s.Lk)("span",we,(0,i.v_)(e.$t("uploadSettings.fileCompress")),1),(0,s.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,s.uX)(),(0,s.CE)("div",Fe,[(0,s.Lk)("span",Le,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",Ue,[(0,s.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,s.Lk)("div",$e,[(0,s.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,s.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,s.Q3)("",!0),o.customerCompress?((0,s.uX)(),(0,s.CE)("div",Se,[(0,s.Lk)("span",Te,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",_e,[(0,s.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,s.Lk)("div",xe,[(0,s.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,s.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,s.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,s.uX)(),(0,s.CE)("div",Ae,[(0,s.Lk)("div",Me,[(0,s.Lk)("span",Re,(0,i.v_)(e.$t("uploadSettings.serverCompress")),1),(0,s.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",De,[(0,s.Lk)("div",Ee,[(0,s.Lk)("span",Ie,(0,i.v_)(e.$t("uploadSettings.enableCompress")),1),(0,s.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Pe,[(0,s.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var ze={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 We=(0,V.A)(ze,[["render",Ne]]);var Ve=We,Be=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"},je=["href"],Oe={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"},lt={class:"upload-list-item-action"};function st(e,t,o,a,l,n){const r=(0,s.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,s.g2)("Link"),h=He.tk,m=(0,s.g2)("Delete");return(0,s.uX)(),(0,s.CE)("div",qe,[(0,s.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,s.uX)(),(0,s.CE)("video",Oe,[(0,s.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,s.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,s.uX)(),(0,s.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,s.uX)(),(0,s.CE)("div",Je,[(0,s.bF)(r,{icon:"file",class:"file-icon"})]))],8,je),(0,s.Lk)("div",Ye,[(0,s.Lk)("div",Ze,[(0,s.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,s.uX)(),(0,s.CE)("div",et,[(0,s.Lk)("div",tt,[(0,s.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,s.k6)(()=>[...t[8]||(t[8]=[(0,s.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,s.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,s.k6)(()=>[...t[9]||(t[9]=[(0,s.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,s.Lk)("div",ot,[(0,s.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,s.k6)(()=>[...t[10]||(t[10]=[(0,s.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,s.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,s.k6)(()=>[...t[11]||(t[11]=[(0,s.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,s.uX)(),(0,s.CE)("div",at,[(0,s.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,s.Lk)("div",lt,[(0,s.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,s.bF)(h,null,{default:(0,s.k6)(()=>[(0,s.bF)(p)]),_:1})]),(0,s.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,s.bF)(h,null,{default:(0,s.k6)(()=>[(0,s.bF)(m)]),_:1})])])])}var it=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:it.Link,Delete:it.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,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const s=l.length+4,i=t-s-3;return i<=0?e.substring(0,t-3)+"...":a.substring(0,i)+"..."+a.slice(-4)+l},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,V.A)(dt,[["render",st],["__scopeId","data-v-645a7810"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(47358)),ft=o(45130);const gt={class:"upload-form"},yt={class:"upload-card-glow",ref:"uploadCardGlow"},bt=["innerHTML"],kt=["aria-label"],vt={key:0,class:"upload-card"},Ct={class:"paste-card-actions"},wt=["aria-label"],Ft=["aria-pressed"],Lt=["aria-pressed"],Ut={class:"upload-list-container"},$t={class:"upload-list-dashboard-action"},St={class:"modern-action-group"},Tt={class:"modern-dropdown-item-content"},_t={class:"modern-action-btn modern-action-btn-danger"};function xt(e,t,n,r,d,c){const u=He.tk,p=(0,s.g2)("font-awesome-icon"),h=a.R7,m=mt.j5,f=G.WK,g=l.S2,y=ht.Ik,b=(0,s.g2)("List"),k=(0,s.g2)("Checked"),v=(0,s.g2)("Failed"),C=Xe.$g,w=O.qi,F=pt.c6,L=pt.Iy,U=pt.dW,$=ut,S=Be.kA;return(0,s.uX)(),(0,s.CE)("div",gt,[(0,s.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[2]||(t[2]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[3]||(t[3]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e)),onDropCapture:t[4]||(t[4]=(0,ft.D$)((...e)=>c.handleDrop&&c.handleDrop(...e),["stop","prevent"]))},[(0,s.Lk)("div",yt,null,512),"default"===n.uploadMethod?((0,s.uX)(),(0,s.Wv)(m,{key:0,class:(0,i.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,s.k6)(()=>[(0,s.bF)(u,{class:(0,i.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[...t[12]||(t[12]=[(0,s.Lk)("svg",{class:"upload-plus-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.25","stroke-linecap":"round","aria-hidden":"true"},[(0,s.Lk)("path",{d:"M12 7v10"}),(0,s.Lk)("path",{d:"M7 12h10"})],-1)])]),_:1},8,["class"]),(0,s.Lk)("div",{class:(0,i.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,bt),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.selectFolderUpload"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.Lk)("button",{type:"button",class:(0,i.C4)(["folder-upload-icon-button",{"upload-list-busy":d.fileList.length}]),"aria-label":e.$t("upload.selectFolderUpload"),onClick:t[0]||(t[0]=(0,ft.D$)((...e)=>c.openFolderPicker&&c.openFolderPicker(...e),["stop","prevent"]))},[(0,s.bF)(p,{icon:"folder-open"})],10,kt)]),_:1},8,["disabled","content"])]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,s.Q3)("",!0),(0,s.Lk)("input",{ref:"folderInput",class:"folder-upload-input",type:"file",webkitdirectory:"",directory:"",multiple:"",onChange:t[1]||(t[1]=(...e)=>c.handleFolderSelection&&c.handleFolderSelection(...e))},null,544)],32),"paste"===n.uploadMethod?((0,s.uX)(),(0,s.CE)("div",vt,[(0,s.bF)(y,{class:(0,i.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[(0,s.bF)(f,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[5]||(t[5]=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,s.Lk)("div",Ct,[(0,s.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,s.Lk)("div",{class:(0,i.C4)(["paste-card-method-group",{"is-external":"external"===d.pasteUploadMethod}]),role:"group","aria-label":e.$t("upload.switchUploadMethod")},[(0,s.Lk)("button",{class:(0,i.C4)(["paste-card-method-button",{"is-active":"save"===d.pasteUploadMethod}]),type:"button","aria-pressed":"save"===d.pasteUploadMethod,onClick:t[6]||(t[6]=e=>d.pasteUploadMethod="save")},(0,i.v_)(e.$t("upload.pasteSave")),11,Ft),(0,s.Lk)("button",{class:(0,i.C4)(["paste-card-method-button",{"is-active":"external"===d.pasteUploadMethod}]),type:"button","aria-pressed":"external"===d.pasteUploadMethod,onClick:t[7]||(t[7]=e=>d.pasteUploadMethod="external")},(0,i.v_)(e.$t("upload.pasteExternal")),11,Lt)],10,wt)])]),_:1},8,["class"])])):(0,s.Q3)("",!0),(0,s.bF)(y,{class:(0,i.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[(0,s.Lk)("div",Ut,[(0,s.bF)(S,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",{class:(0,i.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,s.bF)(C,{class:"upload-list-dashboard-title"},{default:(0,s.k6)(()=>[(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(b)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(k)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadSuccessCount)+" ",1),(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(v)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadErrorCount),1)]),_:1}),(0,s.Lk)("div",$t,[(0,s.Lk)("div",St,[(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[8]||(t[8]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,s.bF)(p,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(U,null,{dropdown:(0,s.k6)(()=>[(0,s.bF)(L,{class:"modern-dropdown-menu"},{default:(0,s.k6)(()=>[(0,s.bF)(F,null,{default:(0,s.k6)(()=>[(0,s.Lk)("div",Tt,[(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadForm.autoRetry")),1),(0,s.bF)(w,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[10]||(t[10]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[9]||(t[9]=(...e)=>c.retryError&&c.retryError(...e))},[(0,s.bF)(p,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(U,null,{dropdown:(0,s.k6)(()=>[(0,s.bF)(L,{class:"modern-dropdown-menu"},{default:(0,s.k6)(()=>[(0,s.bF)(F,{onClick:c.clearFileList},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,s.bF)(F,{onClick:c.clearSuccessList},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("button",_t,[(0,s.bF)(p,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(d.fileList.slice().reverse(),e=>((0,s.uX)(),(0,s.Wv)($,{key:e.uid,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[11]||(t[11]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])])]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var At=o(457),Mt=o(76334),Rt=o(60782);function Dt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function Et(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function It(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Dt(e.srcID,e.name,t);Object.assign(e,o)})}const Pt=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]),Nt=(e,t)=>e>>>t|e<<32-t;function zt(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=Nt(o[u-15],7)^Nt(o[u-15],18)^o[u-15]>>>3,t=Nt(o[u-2],17)^Nt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,l,s,i,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Nt(n,6)^Nt(n,11)^Nt(n,25),t=n&r^~n&d,p=c+e+t+Pt[u]+o[u]>>>0,h=Nt(a,2)^Nt(a,13)^Nt(a,22),m=a&l^a&s^l&s,f=h+m>>>0;c=d,d=r,r=n,n=i+p>>>0,i=s,s=l,l=a,a=p+f>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+s>>>0,t[3]=t[3]+i>>>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 Wt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(l){a+=l.length;let s=0;if(o>0){const a=64-o,i=Math.min(a,l.length);t.set(l.subarray(0,i),o),o+=i,s=i,64===o&&(zt(t,e),o=0)}while(s+64<=l.length)zt(l.subarray(s,s+64),e),s+=64;s56&&(t.fill(0,o,64),zt(t,e),o=0),t.fill(0,o,56);const s=new DataView(t.buffer);s.setUint32(56,Math.floor(l/4294967296),!1),s.setUint32(60,l>>>0,!1),zt(t,e);let i="";for(let t=0;t<8;t++)i+=e[t].toString(16).padStart(8,"0");return i}}}async function Vt(e){const t=Wt(),o=4194304;let a=0;while(ae&&"."!==e).map(e=>".."===e?"_":e).join("/")}function Ht(e=""){const t=Bt(e),o=t.lastIndexOf("/");return-1===o?"":t.slice(0,o)}function Qt(e="",t=""){const o=/^[\\/]/.test(String(e).trim()),a=[Bt(e),Bt(t)].filter(Boolean).join("/");return a?o?`/${a}`:a:""}function Xt(e=[]){return Array.from(e).map(e=>({file:e,relativePath:Bt(e.webkitRelativePath||e.relativePath||e.name)}))}function qt(e){return new Promise((t,o)=>e.file(t,o))}async function jt(e){const t=e.createReader(),o=[];while(1){const e=await new Promise((e,o)=>t.readEntries(e,o));if(!e.length)break;o.push(...e)}return o}async function Ot(e,t,o){const a=Bt([t,e.name].filter(Boolean).join("/"));if(e.isFile){const t=await qt(e);return void o.push({file:t,relativePath:a})}if(e.isDirectory){const t=await jt(e);for(const e of t)await Ot(e,a,o)}}async function Gt(e,t,o){const a=Bt([t,e.name].filter(Boolean).join("/"));if("file"!==e.kind){if("directory"===e.kind)for await(const l of e.values())await Gt(l,a,o)}else o.push({file:await e.getFile(),relativePath:a})}async function Kt(e=[]){const t=Array.from(e).filter(e=>"file"===e.kind),o=[],a=await Promise.all(t.map(async e=>{if("function"!==typeof e.getAsFileSystemHandle)return null;try{return await e.getAsFileSystemHandle()}catch{return null}}));for(let l=0;lthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){It(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&It(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,Rt.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:{createLocalUid(){return this.localUidCounter+=1,`local-${Date.now()}-${this.localUidCounter}`},applyUploadPath(e,t=e.name){const o=String(t||e.name).replace(/\\/g,"/").replace(/^\/+/,"");return e.uploadRelativePath=o,e.uploadFolder=Qt(this.uploadFolder,Ht(o)),e},copyUploadPath(e,t){return t.uploadRelativePath=e.uploadRelativePath||e.name,t.uploadFolder=e.uploadFolder??this.uploadFolder,t},getFileUploadFolder(e){const t=this.fileList.find(t=>t.uid===e.file.uid);return t?.uploadFolder??e.file.uploadFolder??this.uploadFolder},createUploadRequest(e){return{file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)}},async uploadLocalEntries(e){await Promise.allSettled(e.map(async({file:e,relativePath:t})=>{e.uid=this.createLocalUid(),this.applyUploadPath(e,t);const o=await this.beforeUpload(e);o instanceof File&&this.uploadFile(this.createUploadRequest(o))}))},openFolderPicker(){this.$refs.folderInput?.click()},async handleFolderSelection(e){const t=Xt(e.target.files);e.target.value="",await this.uploadLocalEntries(t)},async handleDrop(e){const t=e.dataTransfer;if(!t)return;const o=t.items?.length?await Kt(t.items):Xt(t.files);o.length&&await this.uploadLocalEntries(o)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const s=l.length+4,i=t-s-3;return i<=0?e.substring(0,t-3)+"...":a.substring(0,i)+"..."+a.slice(-4)+l},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 l=20971520;e.file.size>l?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,l=this.autoRetry&&"external"!==a,s="external"===a?"default":this.uploadNameType,i=this.getFileUploadFolder(e),n=new AbortController;this.abortControllers.set(e.file.uid,n);const r=new FormData;if(r.append("file",e.file),"external"===a&&r.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Vt(e.file);r.append("sha256",t),console.log("SHA256 computed:",t)}catch(d){console.error("Failed to compute SHA256:",d)}(0,At.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+s+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(i),method:"post",data:r,withAuthCode:!0,signal:n.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 l="discord"===o?9437184:16777216,s=e.file.size,i=e.file.type||"application/octet-stream",n=Math.ceil(s/l),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType,u=this.getFileUploadFolder(e);let p=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),p=await Vt(e.file),console.log("SHA256 computed:",p)}catch(h){console.error("Failed to compute SHA256:",h)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",i),t.append("totalChunks",n.toString());const m=await(0,At.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(u)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!m.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+m.data.message);const f=m.data.uploadId;console.log("分块上传初始化成功,uploadId:",f);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=f);const y=3,b=new Array(n).fill(0);let k=0,v=!1,C="",w=!1;const F=async t=>{if(v||w)return;const p=t*l,m=Math.min(p+l,s),g=e.file.slice(p,m),y=new FormData;y.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),y.append("chunkIndex",t.toString()),y.append("totalChunks",n.toString()),y.append("uploadId",f),y.append("originalFileName",e.file.name),y.append("originalFileType",i);let k=0;const F=3;while(k{if(v||w)return;const a=Math.round(o.loaded/o.total*100);b[t]=a;const l=Math.round(b.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:l,file:e.file})}})}catch(h){if("CanceledError"===h.name||"ERR_CANCELED"===h.code)return w=!0,void console.log("分块上传已取消:",e.file.name);if(k++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${k}/${F}):`,h),k>=F)throw v=!0,C=`分块 ${t+1}/${n} 上传失败: ${h.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*k))}}},L=[];for(let e=0;e{while(kt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),h.response&&401!==h.response.status?(this.exceptionList.push(e),e.onError(h,e.file)):h.response||(this.exceptionList.push(e),e.onError(h,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,At.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 l=Dt(a,t.name,this.rootUrl);Object.assign(o,l),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(Et(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 l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)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 s=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,i=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.uploadRelativePath||e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,uploadFolder:e.uploadFolder??this.uploadFolder,retryCount:0}),t(e)};if(s)Mt.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 l=new File([t],a.name,{type:t.type});l.uid=e.uid,this.copyUploadPath(a,l);const s=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;n(l,s)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(i){this.uploading=!0;const e="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);n(a,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=>Et(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")})},async handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData;if(!t)return;const o=Array.from(t.items||[]),a=o.filter(e=>"file"===e.kind),l=o.filter(e=>"string"===e.kind);if(a.length>0){e.preventDefault();const t=await Kt(a);t.length&&await this.uploadLocalEntries(t)}else t.files?.length&&(e.preventDefault(),await this.uploadLocalEntries(Xt(t.files)));l.length>0&&this.uploadFromUrl(l)},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`,i=`[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:l,htmlURL:s,ubbURL:i,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{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&At.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 s=o.headers["content-disposition"];if(s){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(s);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(l){a=""}}""===a&&(o=t.exec(s),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 l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),a="PastedFile"+Date.now()+t+"."+l}const i=o.data,n=new File([i],a,{type:i.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);const a=this.getFileUploadFolder(e);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 Vt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const l=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...l));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,At.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:a},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const n=i.data;if(console.log("Upload info:",n),n.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(n.needsLfs&&n.uploadAction){const{href:t,header:a}=n.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,n,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.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 r=await(0,At.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:n.fullId,filePath:n.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:n.channelName},withAuthCode:!0,signal:o.signal});if(!r.data.success)throw new Error(r.data.error||"Failed to commit file");console.log("Upload complete:",r.data);const d={data:[{src:r.data.src}]};e.onSuccess(d,e.file)}catch(l){if("CanceledError"===l.name||"ERR_CANCELED"===l.code||"AbortError"===l.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",l),this.exceptionList.push(e),e.onError(l,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:l,header:s}=a,i=parseInt(s.chunk_size),n=Object.keys(s).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${i}`);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*i,l=Math.min(a+i,e.file.size),n=e.file.slice(a,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(s[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(l,{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,l=document.createElement("canvas"),s=l.getContext("2d");a.onload=()=>{l.width=a.width,l.height=a.height,s.drawImage(a,0,0),l.toBlob(l=>{if(l){const o=e.name,a=o.lastIndexOf("."),s=a>0?o.substring(0,a)+".webp":o+".webp",i=new File([l],s,{type:"image/webp"});i.uid=e.uid,this.copyUploadPath(e,i),t(i)}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,l=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Yt=(0,V.A)(Jt,[["render",xt],["__scopeId","data-v-2f568ddd"]]);var Zt=Yt,eo=o(732),to=o(33892);const oo={class:"directory-suggestion-input",ref:"wrapperRef"},ao={class:"suggestion-dropdown"},lo={class:"suggestion-list"},so=["title","onMousedown"];function io(e,t,o,a,l,n){const r=G.WK;return(0,s.uX)(),(0,s.CE)("div",oo,[(0,s.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,s.bo)((0,s.Lk)("div",ao,[(0,s.Lk)("ul",lo,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.suggestions,(e,t)=>((0,s.uX)(),(0,s.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,ft.D$)(t=>n.selectItem(e),["prevent"])},(0,i.v_)(e.value),41,so))),128))])],512),[[ft.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var no={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),l=Array.isArray(e.children)?e.children:[];t[a]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await At.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("/"),l=a[a.length-1]||"",s=a.slice(0,-1).filter(Boolean),i=s.length>0?`/${s.join("/")}/`:"/";return{segmentInput:l,parentPath:i}},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 l=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const ro=(0,V.A)(no,[["render",io],["__scopeId","data-v-28b8eda7"]]);var co=ro,uo=o(17879);const po={class:"container"},ho={class:"upload-home"},mo={class:"quick-toolbar-actions"},fo={class:"quick-toolbar-actions-inner"},go={class:"header"},yo={class:"title"},bo={class:"title-crayon-text","aria-hidden":"true"},ko={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},vo={class:"dialog-section"},Co={class:"section-header"},wo={class:"section-title"},Fo={class:"section-content"},Lo={class:"dialog-section"},Uo={class:"section-header"},$o={class:"section-title"},So={class:"section-content"},To={class:"setting-item"},_o={class:"setting-label"},xo={key:0,class:"setting-item"},Ao={class:"setting-label"},Mo={class:"dialog-action"},Ro=["innerHTML"],Do={class:"dialog-footer"};function Eo(e,t,o,n,r,d){const c=uo.A,u=(0,s.g2)("font-awesome-icon"),p=l.S2,h=pt.c6,m=pt.Iy,f=pt.dW,g=co,y=G.WK,b=to.A,k=a.R7,v=eo.A,C=Zt,w=J.ll,F=J.MQ,L=O.qi,U=X.kZ,$=Ve,S=Q.A,T=H;return(0,s.uX)(),(0,s.CE)("div",po,[(0,s.Lk)("div",ho,[(0,s.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,s.bF)(f,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,s.k6)(()=>[(0,s.bF)(m,null,{default:(0,s.k6)(()=>[(0,s.bF)(h,{command:"showHistory"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.history")),1)]),_:1}),(0,s.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,s.bF)(h,{command:"toggleLanguage"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,s.bF)(h,{command:"viewDocs"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"more-button"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,s.Lk)("div",{class:(0,i.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,s.Lk)("div",{class:(0,i.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,s.uX)(),(0,s.Wv)(g,{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,s.uX)(),(0,s.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,s.uX)(),(0,s.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,s.k6)(()=>[(0,s.bF)(p,{class:"directory-tree-trigger"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,s.Q3)("",!0)],2),(0,s.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,s.k6)(()=>["default"===r.uploadMethod?((0,s.uX)(),(0,s.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,s.uX)(),(0,s.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,s.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,s.bF)(f,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,s.k6)(()=>[(0,s.bF)(m,null,{default:(0,s.k6)(()=>[(0,s.bF)(h,{command:"toggleTheme"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,s.eW)(" "+(0,i.v_)(d.getThemeText()),1)]),_:1}),(0,s.bF)(h,{command:"toggleUploadMethod"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,s.eW)(" "+(0,i.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,s.bF)(h,{command:"showHistory"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.history")),1)]),_:1}),(0,s.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,s.bF)(h,{command:"toggleLanguage"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,s.bF)(h,{command:"viewDocs"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"mobile-more-button"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,s.Lk)("div",{class:(0,i.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,s.Lk)("div",mo,[(0,s.Lk)("div",fo,[(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,s.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,s.bF)(p,{class:(0,i.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,s.bF)(v,{useConfigLink:!0}),(0,s.Lk)("div",go,[(0,s.Lk)("h1",yo,[(0,s.Lk)("span",bo,(0,i.v_)(d.ownerName)+" ImgHub",1),(0,s.Lk)("a",ko,(0,i.v_)(d.ownerName),1),t[24]||(t[24]=(0,s.eW)(" ImgHub ",-1))])]),(0,s.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,s.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 settings-dialog-scope"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",vo,[(0,s.Lk)("div",Co,[(0,s.Lk)("span",wo,(0,i.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,s.Lk)("div",Fo,[(0,s.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,s.k6)(()=>[(0,s.bF)(w,{value:"url",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"link",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,s.bF)(w,{value:"md",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,s.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,s.bF)(w,{value:"html",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,s.Lk)("span",null,"HTML",-1))]),_:1}),(0,s.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,s.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,s.Lk)("div",Lo,[(0,s.Lk)("div",Uo,[(0,s.Lk)("span",$o,(0,i.v_)(e.$t("settings.customLink")),1),(0,s.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",So,[(0,s.Lk)("div",To,[(0,s.Lk)("span",_o,(0,i.v_)(e.$t("settings.enableCustom")),1),(0,s.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,s.uX)(),(0,s.CE)("div",xo,[(0,s.Lk)("span",Ao,(0,i.v_)(e.$t("settings.customPrefix")),1),(0,s.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,s.Q3)("",!0)])]),(0,s.Lk)("div",Mo,[(0,s.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,s.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,s.bF)(S,{class:"footer"}),(0,s.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,s.k6)(()=>[(0,s.Lk)("span",Do,[(0,s.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,s.k6)(()=>[(0,s.Lk)("div",{innerHTML:r.announcementContent},null,8,Ro)]),_:1},8,["title","modelValue","width"]),(0,s.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Io=o(46638),Po=o(48903),No=o(90144),zo=o(62388),Wo={name:"UploadHome",mixins:[Po.A],data(){return{selectedUrlForm:(0,No.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,zo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,Rt.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:Zt,Footer:Q.A,ToggleDark:uo.A,Logo:eo.A,UploadHistory:H,UploadSettingsDialog:Ve,DirectoryTreePicker:to.A,DirectorySuggestionInput:co},methods:{async fetchAvailableChannels(){try{const e=await At.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,zo.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(){At.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,Io.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,Io.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 Vo=(0,V.A)(Wo,[["render",Eo],["__scopeId","data-v-06705292"]]);var Bo=Vo},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)},50333:function(e,t,o){"use strict";o(85331),o(29092)},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var a=o(46638);function l(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 l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.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 i}});o(44114);var a=o(25507),l=o(16915);let s=!1;async function i(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||s||(s=!0,a.A.commit("setAdminLoggedIn",!1),l.A.push("/adminLogin").finally(()=>{s=!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),l=o(24232);const s={key:0,class:"page-footer"},i=["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",s,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,l.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,i)])]))}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)},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)},97769:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const l={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},s={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={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",`channel-brand-${o.type}`]}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...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",s,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...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-ce6ff2ce"]]);var u=c}}]); +//# sourceMappingURL=807.0a4d199f.js.map \ No newline at end of file diff --git a/frontend-dist/js/807.0a4d199f.js.gz b/frontend-dist/js/807.0a4d199f.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7c1406b9cb66e52c6bd08895e4a5cb8860eb075 GIT binary patch literal 32915 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 Q`Tqm63vx+FImyTX0HHMmz5oCK literal 0 HcmV?d00001 diff --git a/frontend-dist/js/807.0a4d199f.js.map b/frontend-dist/js/807.0a4d199f.js.map new file mode 100644 index 00000000..73b09f58 --- /dev/null +++ b/frontend-dist/js/807.0a4d199f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/807.0a4d199f.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/ToggleDark.vue?4a88","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","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/upload/UploadHistory.vue?942e","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?de1f","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?6ec5","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?cbd3","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/utils/upload/directoryTraversal.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?fcf5","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","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/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"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 { 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=2122c62a&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=2122c62a&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-2122c62a\"]])\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__","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 \"show-after\": 1000\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 \"show-after\": 1000\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=7da2f8c2&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=7da2f8c2&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-7da2f8c2\"]])\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 settings-dialog-scope upload-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\"\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\"\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\"\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\"\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\"\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\"\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=1c6b8366\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"./UploadSettingsDialog.css?vue&type=style&index=1&lang=css&external\"\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=645a7810&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=645a7810&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-645a7810\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, 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 = [\"aria-label\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_6 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_7 = [\"aria-label\"];\nconst _hoisted_8 = [\"aria-pressed\"];\nconst _hoisted_9 = [\"aria-pressed\"];\nconst _hoisted_10 = {\n class: \"upload-list-container\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_12 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_13 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_14 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\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_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_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[2] || (_cache[2] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args)),\n onDropCapture: _cache[4] || (_cache[4] = _withModifiers((...args) => $options.handleDrop && $options.handleDrop(...args), [\"stop\", \"prevent\"]))\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(() => [...(_cache[12] || (_cache[12] = [_createElementVNode(\"svg\", {\n class: \"upload-plus-icon\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"1.25\",\n \"stroke-linecap\": \"round\",\n \"aria-hidden\": \"true\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 7v10\"\n }), _createElementVNode(\"path\", {\n d: \"M7 12h10\"\n })], -1)]))]),\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), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.selectFolderUpload'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: _normalizeClass([\"folder-upload-icon-button\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n \"aria-label\": _ctx.$t('upload.selectFolderUpload'),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.openFolderPicker && $options.openFolderPicker(...args), [\"stop\", \"prevent\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\"\n })], 10, _hoisted_4)]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"input\", {\n ref: \"folderInput\",\n class: \"folder-upload-input\",\n type: \"file\",\n webkitdirectory: \"\",\n directory: \"\",\n multiple: \"\",\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleFolderSelection && $options.handleFolderSelection(...args))\n }, null, 544)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_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[5] || (_cache[5] = $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_6, [_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\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"paste-card-method-group\", {\n 'is-external': $data.pasteUploadMethod === 'external'\n }]),\n role: \"group\",\n \"aria-label\": _ctx.$t('upload.switchUploadMethod')\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'save'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'save',\n onClick: _cache[6] || (_cache[6] = $event => $data.pasteUploadMethod = 'save')\n }, _toDisplayString(_ctx.$t('upload.pasteSave')), 11, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'external'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'external',\n onClick: _cache[7] || (_cache[7] = $event => $data.pasteUploadMethod = 'external')\n }, _toDisplayString(_ctx.$t('upload.pasteExternal')), 11, _hoisted_9)], 10, _hoisted_7)])]),\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 }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_10, [_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_11, [_createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[8] || (_cache[8] = (...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 \"show-after\": 1000\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_13, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $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[9] || (_cache[9] = (...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 \"show-after\": 1000\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_14, [_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.uid,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[11] || (_cache[11] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])])]),\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","function normalizePath(path = '') {\r\n return String(path)\r\n .replace(/\\\\/g, '/')\r\n .split('/')\r\n .filter(segment => segment && segment !== '.')\r\n .map(segment => segment === '..' ? '_' : segment)\r\n .join('/')\r\n}\r\n\r\nexport function getRelativeDirectory(relativePath = '') {\r\n const normalizedPath = normalizePath(relativePath)\r\n const lastSlashIndex = normalizedPath.lastIndexOf('/')\r\n return lastSlashIndex === -1 ? '' : normalizedPath.slice(0, lastSlashIndex)\r\n}\r\n\r\nexport function joinUploadFolder(baseFolder = '', relativeDirectory = '') {\r\n const hasLeadingSlash = /^[\\\\/]/.test(String(baseFolder).trim())\r\n const joinedPath = [normalizePath(baseFolder), normalizePath(relativeDirectory)]\r\n .filter(Boolean)\r\n .join('/')\r\n\r\n if (!joinedPath) return ''\r\n return hasLeadingSlash ? `/${joinedPath}` : joinedPath\r\n}\r\n\r\nexport function filesToUploadEntries(files = []) {\r\n return Array.from(files).map(file => ({\r\n file,\r\n relativePath: normalizePath(file.webkitRelativePath || file.relativePath || file.name)\r\n }))\r\n}\r\n\r\nfunction readFileEntry(entry) {\r\n return new Promise((resolve, reject) => entry.file(resolve, reject))\r\n}\r\n\r\nasync function readAllDirectoryEntries(directoryEntry) {\r\n const reader = directoryEntry.createReader()\r\n const entries = []\r\n\r\n // Chromium may return directory entries in batches (commonly 100 at a time).\r\n while (true) {\r\n const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject))\r\n if (!batch.length) break\r\n entries.push(...batch)\r\n }\r\n\r\n return entries\r\n}\r\n\r\nasync function collectFromEntry(entry, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, entry.name].filter(Boolean).join('/'))\r\n\r\n if (entry.isFile) {\r\n const file = await readFileEntry(entry)\r\n result.push({ file, relativePath })\r\n return\r\n }\r\n\r\n if (entry.isDirectory) {\r\n const children = await readAllDirectoryEntries(entry)\r\n for (const child of children) {\r\n await collectFromEntry(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nasync function collectFromHandle(handle, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, handle.name].filter(Boolean).join('/'))\r\n\r\n if (handle.kind === 'file') {\r\n result.push({ file: await handle.getFile(), relativePath })\r\n return\r\n }\r\n\r\n if (handle.kind === 'directory') {\r\n for await (const child of handle.values()) {\r\n await collectFromHandle(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nexport async function collectFilesFromDataTransferItems(items = []) {\r\n const fileItems = Array.from(items).filter(item => item.kind === 'file')\r\n const result = []\r\n\r\n // Resolve handles while still in the drop/paste event call chain when possible.\r\n const handles = await Promise.all(fileItems.map(async item => {\r\n if (typeof item.getAsFileSystemHandle !== 'function') return null\r\n try {\r\n return await item.getAsFileSystemHandle()\r\n } catch {\r\n return null\r\n }\r\n }))\r\n\r\n for (let index = 0; index < fileItems.length; index++) {\r\n const item = fileItems[index]\r\n const handle = handles[index]\r\n\r\n if (handle) {\r\n await collectFromHandle(handle, '', result)\r\n continue\r\n }\r\n\r\n const entry = typeof item.webkitGetAsEntry === 'function' ? item.webkitGetAsEntry() : null\r\n if (entry) {\r\n await collectFromEntry(entry, '', result)\r\n continue\r\n }\r\n\r\n const file = item.getAsFile?.()\r\n if (file) result.push(...filesToUploadEntries([file]))\r\n }\r\n\r\n return result\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 { collectFilesFromDataTransferItems, filesToUploadEntries, getRelativeDirectory, joinUploadFolder } from '@/utils/upload/directoryTraversal';\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 localUidCounter: 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 createLocalUid() {\n this.localUidCounter += 1;\n return `local-${Date.now()}-${this.localUidCounter}`;\n },\n applyUploadPath(file, relativePath = file.name) {\n const normalizedRelativePath = String(relativePath || file.name).replace(/\\\\/g, '/').replace(/^\\/+/, '');\n file.uploadRelativePath = normalizedRelativePath;\n file.uploadFolder = joinUploadFolder(this.uploadFolder, getRelativeDirectory(normalizedRelativePath));\n return file;\n },\n copyUploadPath(sourceFile, targetFile) {\n targetFile.uploadRelativePath = sourceFile.uploadRelativePath || sourceFile.name;\n targetFile.uploadFolder = sourceFile.uploadFolder ?? this.uploadFolder;\n return targetFile;\n },\n getFileUploadFolder(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n return fileItem?.uploadFolder ?? file.file.uploadFolder ?? this.uploadFolder;\n },\n createUploadRequest(file) {\n return {\n file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, uploadedFile) => this.handleSuccess(response, uploadedFile),\n onError: (error, uploadedFile) => this.handleError(error, uploadedFile)\n };\n },\n async uploadLocalEntries(entries) {\n await Promise.allSettled(entries.map(async ({\n file,\n relativePath\n }) => {\n file.uid = this.createLocalUid();\n this.applyUploadPath(file, relativePath);\n const processedFile = await this.beforeUpload(file);\n if (processedFile instanceof File) {\n this.uploadFile(this.createUploadRequest(processedFile));\n }\n }));\n },\n openFolderPicker() {\n this.$refs.folderInput?.click();\n },\n async handleFolderSelection(event) {\n const entries = filesToUploadEntries(event.target.files);\n event.target.value = '';\n await this.uploadLocalEntries(entries);\n },\n async handleDrop(event) {\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) return;\n const entries = dataTransfer.items?.length ? await collectFilesFromDataTransferItems(dataTransfer.items) : filesToUploadEntries(dataTransfer.files);\n if (entries.length) await this.uploadLocalEntries(entries);\n },\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 const targetUploadFolder = this.getFileUploadFolder(file);\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(targetUploadFolder),\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 const targetUploadFolder = this.getFileUploadFolder(file);\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(targetUploadFolder) + '&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(targetUploadFolder) + '&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(targetUploadFolder) + '&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.uploadRelativePath || 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 uploadFolder: file.uploadFolder ?? this.uploadFolder,\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 this.copyUploadPath(processedFile, newFile);\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n pushFileToQueue(newFile, needServerCompress);\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\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 pushFileToQueue(processedFile, needServerCompress);\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 async handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const items = Array.from(clipboardData.items || []);\n const fileItems = items.filter(item => item.kind === 'file');\n const stringItems = items.filter(item => item.kind === 'string');\n if (fileItems.length > 0) {\n event.preventDefault();\n const entries = await collectFilesFromDataTransferItems(fileItems);\n if (entries.length) await this.uploadLocalEntries(entries);\n } else if (clipboardData.files?.length) {\n event.preventDefault();\n await this.uploadLocalEntries(filesToUploadEntries(clipboardData.files));\n }\n if (stringItems.length > 0) this.uploadFromUrl(stringItems);\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 === '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 const targetUploadFolder = this.getFileUploadFolder(file);\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: targetUploadFolder\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 this.copyUploadPath(file, webpFile);\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=2f568ddd&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=2f568ddd&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-2f568ddd\"]])\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 settings-dialog-scope\"\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=06705292&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=06705292&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-06705292\"]])\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, 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', `channel-brand-${$props.type}`]\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=ce6ff2ce&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=ce6ff2ce&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-ce6ff2ce\"]])\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","id","_hoisted_3","_hoisted_4","_component_font_awesome_icon","onClick","args","handleToggleClick","mode","isAuto","key","icon","style","isDark","viewBox","fill","stroke","x","cx","cy","mask","opacity","x1","y1","x2","y2","_","data","$store","getters","useDarkMode","cusDarkMode","methods","commit","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","$slots","undefined","error","fetchDirectoryTree","$t","ref","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","loading","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","response","fetchWithAuth","method","ok","status","json","axios","withAuthCode","tree","err","console","startsWith","$emit","_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","url","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","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","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","components","ChannelIcon","Array","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_el_upload","_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","onDropCapture","handleDrop","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","innerHTML","disabled","disableTooltip","openFolderPicker","webkitdirectory","directory","onChange","handleFolderSelection","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","role","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","copyAll","dropdown","autoReUpload","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","uid","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","view","DataView","setUint32","floor","hex","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","normalizePath","replace","segment","join","getRelativeDirectory","relativePath","normalizedPath","lastSlashIndex","joinUploadFolder","baseFolder","relativeDirectory","hasLeadingSlash","test","trim","joinedPath","filesToUploadEntries","files","from","webkitRelativePath","readFileEntry","entry","resolve","reject","readAllDirectoryEntries","directoryEntry","reader","createReader","entries","batch","readEntries","collectFromEntry","parentPath","isFile","isDirectory","child","collectFromHandle","handle","kind","values","getFile","collectFilesFromDataTransferItems","fileItems","handles","all","getAsFileSystemHandle","index","webkitGetAsEntry","getAsFile","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","localUidCounter","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","scrollContainer","setScrollTop","deep","immediate","location","protocol","host","handlePaste","storeAutoReUpload","createLocalUid","applyUploadPath","normalizedRelativePath","uploadRelativePath","copyUploadPath","sourceFile","targetFile","getFileUploadFolder","fileItem","find","createUploadRequest","onProgress","evt","uploadedFile","uploadLocalEntries","allSettled","processedFile","File","folderInput","click","dataTransfer","waitingItem","uploadingItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","targetUploadFolder","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","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","warn","pool","currentIndex","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","saveToHistory","newRecord","scheduleAutoRetry","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","controller","clear","tagName","clipboardData","stringItems","preventDefault","uploadFromUrl","validUrls","getAsString","callback","mdUrl","htmlUrl","ubbUrl","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","checkResult","retryFailedFiles","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","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","normalizeDirectoryPath","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","isArray","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","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","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","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/807.0a4d199f.js.map.gz b/frontend-dist/js/807.0a4d199f.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..656cb84f2838c19962fafd9b19f747c2960df7a6 GIT binary patch literal 82487 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%0ATeUveg^(+hP*?VcneDS@(&gfF|U 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

c84)&I7n@2ol?((Z+!=wYosY$@M=ba4S*msF8GS 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 t;^v6ZC#Q1pt`v%jp0B literal 0 HcmV?d00001 diff --git a/frontend-dist/js/927.1adefc82.js b/frontend-dist/js/927.1adefc82.js deleted file mode 100644 index 8c83525d..00000000 --- a/frontend-dist/js/927.1adefc82.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[927],{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),l=o(24232);const s=["href","target"],i=["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,l.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,l.C4)(d.logoClasses),alt:o.alt,src:d.logoUrl},null,10,i)],10,s)}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},1927:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return Bo}});var a=o(78507),l=(o(85331),o(213),o(80047)),s=(o(99648),o(56768)),i=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"},f=["src"],g=["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"},_=["title"],x=["title"],A={class:"list-meta"},M={class:"upload-time"},R={class:"list-actions"},D={key:0,class:"load-more-container"},E={key:0,class:"loading-indicator"},I={key:1,class:"load-more-hint"},P={key:1,class:"no-more-hint"},N={key:1,class:"empty-state"};function z(e,t,o,z,W,V){const B=(0,s.g2)("font-awesome-icon"),H=l.S2,Q=a.R7;return(0,s.uX)(),(0,s.CE)("div",{class:(0,i.C4)(["history-container",{active:o.show}])},[(0,s.Lk)("div",n,[(0,s.Lk)("div",r,[(0,s.Lk)("h2",null,(0,i.v_)(e.$t("uploadHistory.title")),1),(0,s.Lk)("span",d,(0,i.v_)(e.$t("uploadHistory.totalRecords",{count:W.totalCount})),1)]),(0,s.Lk)("div",c,[(0,s.bF)(Q,{content:e.$t("uploadHistory.switchView"),placement:"bottom","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(H,{circle:"",onClick:V.toggleViewMode},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"grid"===W.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,s.bF)(Q,{content:e.$t("uploadHistory.clearRecords"),placement:"bottom","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(H,{circle:"",type:"danger",onClick:V.clearHistory},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1},8,["content"]),(0,s.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"times"})]),_:1})])]),W.historyList.length>0?((0,s.uX)(),(0,s.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>V.handleScroll&&V.handleScroll(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(V.groupedHistory,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.date,class:"history-group"},[(0,s.Lk)("div",u,[t[4]||(t[4]=(0,s.Lk)("div",{class:"timeline-dot"},null,-1)),(0,s.Lk)("span",p,(0,i.v_)(e.date),1)]),"grid"===W.viewMode?((0,s.uX)(),(0,s.CE)("div",h,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.items,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.time,class:"grid-item"},[(0,s.Lk)("div",m,[V.isImage(e.name)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,f)):V.isVideo(e.name)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,s.uX)(),(0,s.CE)("div",y,[(0,s.bF)(B,{icon:"file",class:"file-icon"})])),(0,s.Lk)("div",b,[(0,s.Lk)("div",k,[(0,s.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,s.Lk)("div",v,[(0,s.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,C),(0,s.Lk)("div",w,(0,i.v_)(V.formatTime(e.time)),1)])]))),128))])):((0,s.uX)(),(0,s.CE)("div",F,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e.items,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.time,class:"list-item"},[(0,s.Lk)("div",L,[V.isImage(e.name)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,U)):V.isVideo(e.name)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:e.url,muted:""},null,8,$)):((0,s.uX)(),(0,s.CE)("div",S,[(0,s.bF)(B,{icon:"file"})]))]),(0,s.Lk)("div",T,[(0,s.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,_),(0,s.Lk)("div",{class:"file-url",title:e.url},(0,i.v_)(e.url),9,x)]),(0,s.Lk)("div",A,[(0,s.Lk)("div",M,(0,i.v_)(V.formatTime(e.time)),1)]),(0,s.Lk)("div",R,[(0,s.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,s.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,s.k6)(()=>[(0,s.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),V.hasMore?((0,s.uX)(),(0,s.CE)("div",D,[W.loadingMore?((0,s.uX)(),(0,s.CE)("div",E,[(0,s.bF)(B,{icon:"spinner",spin:""}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadHistory.loading")),1)])):((0,s.uX)(),(0,s.CE)("div",I,(0,i.v_)(e.$t("uploadHistory.pullToLoadMore")),1))])):W.historyList.length>0?((0,s.uX)(),(0,s.CE)("div",P,(0,i.v_)(e.$t("uploadHistory.noMoreRecords")),1)):(0,s.Q3)("",!0)],544)):((0,s.uX)(),(0,s.CE)("div",N,[(0,s.bF)(B,{icon:"history",class:"empty-icon"}),(0,s.Lk)("p",null,(0,i.v_)(e.$t("uploadHistory.emptyHistory")),1)]))],2)}o(44114),o(18111),o(22489),o(7588),o(61701);var W={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,l=t.clientHeight;a-o-l<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"),l=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${a}-${l} ${s}:${i}:${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)}}},V=o(71241);const B=(0,V.A)(W,[["render",z],["__scopeId","data-v-7da2f8c2"]]);var H=B,Q=o(86975),X=o(9267),q=(o(15616),o(81418)),j=(o(50333),o(74757)),O=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(97769));const Z={class:"dialog-section"},ee={class:"section-header"},te={class:"section-title"},oe={class:"section-content"},ae={class:"setting-item"},le={class:"setting-label"},se={key:0,class:"setting-item"},ie={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"},fe={class:"dialog-section"},ge={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"},_e={class:"slider-wrapper"},xe={class:"slider-input-wrapper"},Ae={key:0,class:"dialog-section"},Me={class:"section-header"},Re={class:"section-title"},De={class:"section-content"},Ee={class:"setting-item"},Ie={class:"setting-label"},Pe={class:"dialog-action"};function Ne(e,t,o,n,r,d){const c=Y.A,u=J.ll,p=J.MQ,h=(0,s.g2)("font-awesome-icon"),m=a.R7,f=K.P9,g=K.AV,y=G.WK,b=O.qi,k=j.B8,v=q.lq,C=l.S2,w=X.kZ;return(0,s.uX)(),(0,s.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 settings-dialog-scope upload-settings-dialog"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",Z,[(0,s.Lk)("div",ee,[(0,s.Lk)("span",te,(0,i.v_)(e.$t("uploadSettings.uploadChannel")),1)]),(0,s.Lk)("div",oe,[(0,s.Lk)("div",ae,[(0,s.Lk)("span",le,(0,i.v_)(e.$t("uploadSettings.channelType")),1),(0,s.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,s.k6)(()=>[(0,s.bF)(u,{label:"telegram",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"telegram",class:"channel-icon"}),t[13]||(t[13]=(0,s.Lk)("span",null,"TG",-1))]),_:1}),(0,s.bF)(u,{label:"cfr2",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"cfr2",class:"channel-icon"}),t[14]||(t[14]=(0,s.Lk)("span",null,"R2",-1))]),_:1}),(0,s.bF)(u,{label:"s3",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"s3",class:"channel-icon"}),t[15]||(t[15]=(0,s.Lk)("span",null,"S3",-1))]),_:1}),(0,s.bF)(u,{label:"discord",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"discord",class:"channel-icon"}),t[16]||(t[16]=(0,s.Lk)("span",null,"DC",-1))]),_:1}),(0,s.bF)(u,{label:"huggingface",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"huggingface",class:"channel-icon"}),t[17]||(t[17]=(0,s.Lk)("span",null,"HF",-1))]),_:1}),(0,s.bF)(u,{label:"webdav",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{type:"webdav",class:"channel-icon"}),t[18]||(t[18]=(0,s.Lk)("span",null,"WD",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,s.uX)(),(0,s.CE)("div",se,[(0,s.Lk)("span",ie,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.channelName"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.channelNameTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(g,{"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,s.k6)(()=>[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(o.currentChannelList,e=>((0,s.uX)(),(0,s.Wv)(f,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value","placeholder"])])):(0,s.Q3)("",!0),(0,s.Lk)("div",ne,[(0,s.Lk)("span",re,(0,i.v_)(e.$t("uploadSettings.uploadDirectory")),1),(0,s.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,s.Lk)("div",de,[(0,s.Lk)("span",ce,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.autoSwitch"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.autoSwitchTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(b,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,s.Lk)("div",ue,[(0,s.Lk)("div",pe,[(0,s.Lk)("span",he,(0,i.v_)(e.$t("uploadSettings.fileNaming")),1)]),(0,s.Lk)("div",me,[(0,s.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,s.k6)(()=>[(0,s.bF)(u,{label:"default",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"cog",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingDefault")),1)]),_:1}),(0,s.bF)(u,{label:"index",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"hashtag",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingIndex")),1)]),_:1}),(0,s.bF)(u,{label:"origin",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"file-signature",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingOrigin")),1)]),_:1}),(0,s.bF)(u,{label:"short",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"compress-alt",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadSettings.namingShort")),1)]),_:1})]),_:1},8,["model-value"])])]),(0,s.Lk)("div",fe,[(0,s.Lk)("div",ge,[(0,s.Lk)("span",ye,(0,i.v_)(e.$t("uploadSettings.filePreprocess")),1),(0,s.bF)(m,{content:e.$t("uploadSettings.filePreprocessTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",be,[(0,s.Lk)("div",ke,[(0,s.Lk)("span",ve,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.convertToWebp"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.convertToWebpTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.bF)(b,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,s.Lk)("div",Ce,[(0,s.Lk)("span",we,(0,i.v_)(e.$t("uploadSettings.fileCompress")),1),(0,s.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,s.uX)(),(0,s.CE)("div",Fe,[(0,s.Lk)("span",Le,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.compressThreshold"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.compressThresholdTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",Ue,[(0,s.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,s.Lk)("div",$e,[(0,s.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,s.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,s.Q3)("",!0),o.customerCompress?((0,s.uX)(),(0,s.CE)("div",Se,[(0,s.Lk)("span",Te,[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.expectedSize"))+" ",1),(0,s.bF)(m,{content:e.$t("uploadSettings.expectedSizeTooltip"),placement:"top"},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"inline-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",_e,[(0,s.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,s.Lk)("div",xe,[(0,s.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,s.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,s.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,s.uX)(),(0,s.CE)("div",Ae,[(0,s.Lk)("div",Me,[(0,s.Lk)("span",Re,(0,i.v_)(e.$t("uploadSettings.serverCompress")),1),(0,s.bF)(m,{content:e.$t("uploadSettings.serverCompressTooltip"),placement:"top","raw-content":""},{default:(0,s.k6)(()=>[(0,s.bF)(h,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",De,[(0,s.Lk)("div",Ee,[(0,s.Lk)("span",Ie,(0,i.v_)(e.$t("uploadSettings.enableCompress")),1),(0,s.bF)(b,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Pe,[(0,s.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>d.visible=!1),class:"confirm-btn"},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("uploadSettings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"])}var ze={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 We=(0,V.A)(ze,[["render",Ne]]);var Ve=We,Be=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"},je=["href"],Oe={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"},lt={class:"upload-list-item-action"};function st(e,t,o,a,l,n){const r=(0,s.g2)("font-awesome-icon"),d=Xe.$g,c=G.WK,u=Qe.ve,p=(0,s.g2)("Link"),h=He.tk,m=(0,s.g2)("Delete");return(0,s.uX)(),(0,s.CE)("div",qe,[(0,s.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,s.uX)(),(0,s.CE)("video",Oe,[(0,s.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Ge),t[7]||(t[7]=(0,s.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,s.uX)(),(0,s.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,s.uX)(),(0,s.CE)("div",Je,[(0,s.bF)(r,{icon:"file",class:"file-icon"})]))],8,je),(0,s.Lk)("div",Ye,[(0,s.Lk)("div",Ze,[(0,s.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,s.uX)(),(0,s.CE)("div",et,[(0,s.Lk)("div",tt,[(0,s.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,s.k6)(()=>[...t[8]||(t[8]=[(0,s.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,s.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,s.k6)(()=>[...t[9]||(t[9]=[(0,s.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,s.Lk)("div",ot,[(0,s.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,s.k6)(()=>[...t[10]||(t[10]=[(0,s.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,s.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,s.k6)(()=>[...t[11]||(t[11]=[(0,s.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,s.uX)(),(0,s.CE)("div",at,[(0,s.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,s.Lk)("div",lt,[(0,s.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,s.bF)(h,null,{default:(0,s.k6)(()=>[(0,s.bF)(p)]),_:1})]),(0,s.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,s.bF)(h,null,{default:(0,s.k6)(()=>[(0,s.bF)(m)]),_:1})])])])}var it=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:it.Link,Delete:it.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,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const s=l.length+4,i=t-s-3;return i<=0?e.substring(0,t-3)+"...":a.substring(0,i)+"..."+a.slice(-4)+l},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,V.A)(dt,[["render",st],["__scopeId","data-v-645a7810"]]);var ut=ct,pt=o(62086),ht=(o(40670),o(88830),o(23597),o(70683)),mt=(o(95385),o(47358)),ft=o(45130);const gt={class:"upload-form"},yt={class:"upload-card-glow",ref:"uploadCardGlow"},bt=["innerHTML"],kt=["aria-label"],vt={key:0,class:"upload-card"},Ct={class:"paste-card-actions"},wt=["aria-label"],Ft=["aria-pressed"],Lt=["aria-pressed"],Ut={class:"upload-list-container"},$t={class:"upload-list-dashboard-action"},St={class:"modern-action-group"},Tt={class:"modern-dropdown-item-content"},_t={class:"modern-action-btn modern-action-btn-danger"};function xt(e,t,n,r,d,c){const u=He.tk,p=(0,s.g2)("font-awesome-icon"),h=a.R7,m=mt.j5,f=G.WK,g=l.S2,y=ht.Ik,b=(0,s.g2)("List"),k=(0,s.g2)("Checked"),v=(0,s.g2)("Failed"),C=Xe.$g,w=O.qi,F=pt.c6,L=pt.Iy,U=pt.dW,$=ut,S=Be.kA;return(0,s.uX)(),(0,s.CE)("div",gt,[(0,s.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[2]||(t[2]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[3]||(t[3]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e)),onDropCapture:t[4]||(t[4]=(0,ft.D$)((...e)=>c.handleDrop&&c.handleDrop(...e),["stop","prevent"]))},[(0,s.Lk)("div",yt,null,512),"default"===n.uploadMethod?((0,s.uX)(),(0,s.Wv)(m,{key:0,class:(0,i.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,s.k6)(()=>[(0,s.bF)(u,{class:(0,i.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[...t[12]||(t[12]=[(0,s.Lk)("svg",{class:"upload-plus-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.25","stroke-linecap":"round","aria-hidden":"true"},[(0,s.Lk)("path",{d:"M12 7v10"}),(0,s.Lk)("path",{d:"M7 12h10"})],-1)])]),_:1},8,["class"]),(0,s.Lk)("div",{class:(0,i.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}]),innerHTML:e.$t("upload.dragUploadText")},null,10,bt),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.selectFolderUpload"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.Lk)("button",{type:"button",class:(0,i.C4)(["folder-upload-icon-button",{"upload-list-busy":d.fileList.length}]),"aria-label":e.$t("upload.selectFolderUpload"),onClick:t[0]||(t[0]=(0,ft.D$)((...e)=>c.openFolderPicker&&c.openFolderPicker(...e),["stop","prevent"]))},[(0,s.bF)(p,{icon:"folder-open"})],10,kt)]),_:1},8,["disabled","content"])]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,s.Q3)("",!0),(0,s.Lk)("input",{ref:"folderInput",class:"folder-upload-input",type:"file",webkitdirectory:"",directory:"",multiple:"",onChange:t[1]||(t[1]=(...e)=>c.handleFolderSelection&&c.handleFolderSelection(...e))},null,544)],32),"paste"===n.uploadMethod?((0,s.uX)(),(0,s.CE)("div",vt,[(0,s.bF)(y,{class:(0,i.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[(0,s.bF)(f,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[5]||(t[5]=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,s.Lk)("div",Ct,[(0,s.bF)(g,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.pasteUploadBtn")),1)]),_:1},8,["size","onClick"]),(0,s.Lk)("div",{class:(0,i.C4)(["paste-card-method-group",{"is-external":"external"===d.pasteUploadMethod}]),role:"group","aria-label":e.$t("upload.switchUploadMethod")},[(0,s.Lk)("button",{class:(0,i.C4)(["paste-card-method-button",{"is-active":"save"===d.pasteUploadMethod}]),type:"button","aria-pressed":"save"===d.pasteUploadMethod,onClick:t[6]||(t[6]=e=>d.pasteUploadMethod="save")},(0,i.v_)(e.$t("upload.pasteSave")),11,Ft),(0,s.Lk)("button",{class:(0,i.C4)(["paste-card-method-button",{"is-active":"external"===d.pasteUploadMethod}]),type:"button","aria-pressed":"external"===d.pasteUploadMethod,onClick:t[7]||(t[7]=e=>d.pasteUploadMethod="external")},(0,i.v_)(e.$t("upload.pasteExternal")),11,Lt)],10,wt)])]),_:1},8,["class"])])):(0,s.Q3)("",!0),(0,s.bF)(y,{class:(0,i.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length}])},{default:(0,s.k6)(()=>[(0,s.Lk)("div",Ut,[(0,s.bF)(S,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",{class:(0,i.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,s.bF)(C,{class:"upload-list-dashboard-title"},{default:(0,s.k6)(()=>[(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(b)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(k)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadSuccessCount)+" ",1),(0,s.bF)(u,null,{default:(0,s.k6)(()=>[(0,s.bF)(v)]),_:1}),(0,s.eW)((0,i.v_)(c.uploadErrorCount),1)]),_:1}),(0,s.Lk)("div",$t,[(0,s.Lk)("div",St,[(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.copyAll"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.Lk)("button",{class:"modern-action-btn modern-action-btn-copy",onClick:t[8]||(t[8]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,s.bF)(p,{icon:"copy"})])]),_:1},8,["disabled","content"]),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.retryFailed"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(U,null,{dropdown:(0,s.k6)(()=>[(0,s.bF)(L,{class:"modern-dropdown-menu"},{default:(0,s.k6)(()=>[(0,s.bF)(F,null,{default:(0,s.k6)(()=>[(0,s.Lk)("div",Tt,[(0,s.Lk)("span",null,(0,i.v_)(e.$t("uploadForm.autoRetry")),1),(0,s.bF)(w,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[10]||(t[10]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("button",{class:"modern-action-btn modern-action-btn-retry",onClick:t[9]||(t[9]=(...e)=>c.retryError&&c.retryError(...e))},[(0,s.bF)(p,{icon:"redo"})])]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(h,{disabled:c.disableTooltip,content:e.$t("upload.clearList"),placement:"top","show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(U,null,{dropdown:(0,s.k6)(()=>[(0,s.bF)(L,{class:"modern-dropdown-menu"},{default:(0,s.k6)(()=>[(0,s.bF)(F,{onClick:c.clearFileList},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.clearAll")),1)]),_:1},8,["onClick"]),(0,s.bF)(F,{onClick:c.clearSuccessList},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.clearUploaded")),1)]),_:1},8,["onClick"])]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("button",_t,[(0,s.bF)(p,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled","content"])])])],2),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(d.fileList.slice().reverse(),e=>((0,s.uX)(),(0,s.Wv)($,{key:e.uid,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[11]||(t[11]=e=>e.url=o(96682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])])]),_:1},8,["class"])])}o(20116),o(18237),o(79577),o(41549),o(49797),o(49631),o(35623),o(64979);var At=o(457),Mt=o(76334),Rt=o(60782);function Dt(e,t,o){const a=o+e;return{finalURL:a,mdURL:`![${t}](${a})`,htmlURL:`${t}`,ubbURL:`[img]${a}[/img]`}}function Et(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function It(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=Dt(e.srcID,e.name,t);Object.assign(e,o)})}const Pt=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]),Nt=(e,t)=>e>>>t|e<<32-t;function zt(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=Nt(o[u-15],7)^Nt(o[u-15],18)^o[u-15]>>>3,t=Nt(o[u-2],17)^Nt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[a,l,s,i,n,r,d,c]=t;for(let u=0;u<64;u++){const e=Nt(n,6)^Nt(n,11)^Nt(n,25),t=n&r^~n&d,p=c+e+t+Pt[u]+o[u]>>>0,h=Nt(a,2)^Nt(a,13)^Nt(a,22),m=a&l^a&s^l&s,f=h+m>>>0;c=d,d=r,r=n,n=i+p>>>0,i=s,s=l,l=a,a=p+f>>>0}t[0]=t[0]+a>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+s>>>0,t[3]=t[3]+i>>>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 Wt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,a=0;return{update(l){a+=l.length;let s=0;if(o>0){const a=64-o,i=Math.min(a,l.length);t.set(l.subarray(0,i),o),o+=i,s=i,64===o&&(zt(t,e),o=0)}while(s+64<=l.length)zt(l.subarray(s,s+64),e),s+=64;s56&&(t.fill(0,o,64),zt(t,e),o=0),t.fill(0,o,56);const s=new DataView(t.buffer);s.setUint32(56,Math.floor(l/4294967296),!1),s.setUint32(60,l>>>0,!1),zt(t,e);let i="";for(let t=0;t<8;t++)i+=e[t].toString(16).padStart(8,"0");return i}}}async function Vt(e){const t=Wt(),o=4194304;let a=0;while(ae&&"."!==e).map(e=>".."===e?"_":e).join("/")}function Ht(e=""){const t=Bt(e),o=t.lastIndexOf("/");return-1===o?"":t.slice(0,o)}function Qt(e="",t=""){const o=/^[\\/]/.test(String(e).trim()),a=[Bt(e),Bt(t)].filter(Boolean).join("/");return a?o?`/${a}`:a:""}function Xt(e=[]){return Array.from(e).map(e=>({file:e,relativePath:Bt(e.webkitRelativePath||e.relativePath||e.name)}))}function qt(e){return new Promise((t,o)=>e.file(t,o))}async function jt(e){const t=e.createReader(),o=[];while(1){const e=await new Promise((e,o)=>t.readEntries(e,o));if(!e.length)break;o.push(...e)}return o}async function Ot(e,t,o){const a=Bt([t,e.name].filter(Boolean).join("/"));if(e.isFile){const t=await qt(e);return void o.push({file:t,relativePath:a})}if(e.isDirectory){const t=await jt(e);for(const e of t)await Ot(e,a,o)}}async function Gt(e,t,o){const a=Bt([t,e.name].filter(Boolean).join("/"));if("file"!==e.kind){if("directory"===e.kind)for await(const l of e.values())await Gt(l,a,o)}else o.push({file:await e.getFile(),relativePath:a})}async function Kt(e=[]){const t=Array.from(e).filter(e=>"file"===e.kind),o=[],a=await Promise.all(t.map(async e=>{if("function"!==typeof e.getAsFileSystemHandle)return null;try{return await e.getAsFileSystemHandle()}catch{return null}}));for(let l=0;lthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){It(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&It(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,Rt.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:{createLocalUid(){return this.localUidCounter+=1,`local-${Date.now()}-${this.localUidCounter}`},applyUploadPath(e,t=e.name){const o=String(t||e.name).replace(/\\/g,"/").replace(/^\/+/,"");return e.uploadRelativePath=o,e.uploadFolder=Qt(this.uploadFolder,Ht(o)),e},copyUploadPath(e,t){return t.uploadRelativePath=e.uploadRelativePath||e.name,t.uploadFolder=e.uploadFolder??this.uploadFolder,t},getFileUploadFolder(e){const t=this.fileList.find(t=>t.uid===e.file.uid);return t?.uploadFolder??e.file.uploadFolder??this.uploadFolder},createUploadRequest(e){return{file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)}},async uploadLocalEntries(e){await Promise.allSettled(e.map(async({file:e,relativePath:t})=>{e.uid=this.createLocalUid(),this.applyUploadPath(e,t);const o=await this.beforeUpload(e);o instanceof File&&this.uploadFile(this.createUploadRequest(o))}))},openFolderPicker(){this.$refs.folderInput?.click()},async handleFolderSelection(e){const t=Xt(e.target.files);e.target.value="",await this.uploadLocalEntries(t)},async handleDrop(e){const t=e.dataTransfer;if(!t)return;const o=t.items?.length?await Kt(t.items):Xt(t.files);o.length&&await this.uploadLocalEntries(o)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let a,l;o>0?(a=e.substring(0,o),l=e.substring(o)):(a=e,l="");const s=l.length+4,i=t-s-3;return i<=0?e.substring(0,t-3)+"...":a.substring(0,i)+"..."+a.slice(-4)+l},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 l=20971520;e.file.size>l?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,l=this.autoRetry&&"external"!==a,s="external"===a?"default":this.uploadNameType,i=this.getFileUploadFolder(e),n=new AbortController;this.abortControllers.set(e.file.uid,n);const r=new FormData;if(r.append("file",e.file),"external"===a&&r.append("url",e.file.url),"huggingface"===a)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Vt(e.file);r.append("sha256",t),console.log("SHA256 computed:",t)}catch(d){console.error("Failed to compute SHA256:",d)}(0,At.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+a+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+s+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(i),method:"post",data:r,withAuthCode:!0,signal:n.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 l="discord"===o?9437184:16777216,s=e.file.size,i=e.file.type||"application/octet-stream",n=Math.ceil(s/l),r=t.serverCompress,d=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType,u=this.getFileUploadFolder(e);let p=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),p=await Vt(e.file),console.log("SHA256 computed:",p)}catch(h){console.error("Failed to compute SHA256:",h)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",i),t.append("totalChunks",n.toString());const m=await(0,At.A)({url:"/upload?serverCompress="+r+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+d+"&uploadFolder="+encodeURIComponent(u)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!m.data.success)throw new Error(this.$t("uploadForm.chunkInitFailed")+": "+m.data.message);const f=m.data.uploadId;console.log("分块上传初始化成功,uploadId:",f);const g=this.fileList.find(t=>t.uid===e.file.uid);g&&(g.totalChunks=n,g.uploadId=f);const y=3,b=new Array(n).fill(0);let k=0,v=!1,C="",w=!1;const F=async t=>{if(v||w)return;const p=t*l,m=Math.min(p+l,s),g=e.file.slice(p,m),y=new FormData;y.append("file",g,`${e.file.name}.part${t.toString().padStart(3,"0")}`),y.append("chunkIndex",t.toString()),y.append("totalChunks",n.toString()),y.append("uploadId",f),y.append("originalFileName",e.file.name),y.append("originalFileType",i);let k=0;const F=3;while(k{if(v||w)return;const a=Math.round(o.loaded/o.total*100);b[t]=a;const l=Math.round(b.reduce((e,t)=>e+t,0)/n);e.onProgress({percent:l,file:e.file})}})}catch(h){if("CanceledError"===h.name||"ERR_CANCELED"===h.code)return w=!0,void console.log("分块上传已取消:",e.file.name);if(k++,console.warn(`分块 ${t+1}/${n} 上传失败 (重试 ${k}/${F}):`,h),k>=F)throw v=!0,C=`分块 ${t+1}/${n} 上传失败: ${h.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*k))}}},L=[];for(let e=0;e{while(kt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),h.response&&401!==h.response.status?(this.exceptionList.push(e),e.onError(h,e.file)):h.response||(this.exceptionList.push(e),e.onError(h,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,At.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 l=Dt(a,t.name,this.rootUrl);Object.assign(o,l),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(Et(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 l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)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 s=a.type.includes("image")&&this.customerCompress&&a.size/1024/1024>this.compressBar,i=a.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const a=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.uploadRelativePath||e.name,url:a,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,uploadFolder:e.uploadFolder??this.uploadFolder,retryCount:0}),t(e)};if(s)Mt.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 l=new File([t],a.name,{type:t.type});l.uid=e.uid,this.copyUploadPath(a,l);const s=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;n(l,s)}).catch(e=>{this.$message.error(this.$t("uploadForm.compressFailedCannotUpload",{name:a.name})),o(e)});else if(i){this.uploading=!0;const e="telegram"===this.uploadChannel&&this.serverCompress&&(!a.type.includes("image")||a.size/1024/1024<10);n(a,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=>Et(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")})},async handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData;if(!t)return;const o=Array.from(t.items||[]),a=o.filter(e=>"file"===e.kind),l=o.filter(e=>"string"===e.kind);if(a.length>0){e.preventDefault();const t=await Kt(a);t.length&&await this.uploadLocalEntries(t)}else t.files?.length&&(e.preventDefault(),await this.uploadLocalEntries(Xt(t.files)));l.length>0&&this.uploadFromUrl(l)},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`,i=`[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:l,htmlURL:s,ubbURL:i,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{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let a="";o.test(e)&&At.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 s=o.headers["content-disposition"];if(s){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(s);if(null!=o&&o[1]){a=o[1].replace(/['"]/g,"");try{a=decodeURIComponent(a)}catch(l){a=""}}""===a&&(o=t.exec(s),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 l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),a="PastedFile"+Date.now()+t+"."+l}const i=o.data,n=new File([i],a,{type:i.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);const a=this.getFileUploadFolder(e);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 Vt(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const l=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),s=btoa(String.fromCharCode(...l));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,At.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:a},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const n=i.data;if(console.log("Upload info:",n),n.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(n.needsLfs&&n.uploadAction){const{href:t,header:a}=n.uploadAction;if(a?.chunk_size)await this.uploadToHuggingFaceMultipart(e,n,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:a||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.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 r=await(0,At.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:n.fullId,filePath:n.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:n.channelName},withAuthCode:!0,signal:o.signal});if(!r.data.success)throw new Error(r.data.error||"Failed to commit file");console.log("Upload complete:",r.data);const d={data:[{src:r.data.src}]};e.onSuccess(d,e.file)}catch(l){if("CanceledError"===l.name||"ERR_CANCELED"===l.code||"AbortError"===l.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",l),this.exceptionList.push(e),e.onError(l,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:a}=t,{href:l,header:s}=a,i=parseInt(s.chunk_size),n=Object.keys(s).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${i}`);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*i,l=Math.min(a+i,e.file.size),n=e.file.slice(a,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(s[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(l,{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,l=document.createElement("canvas"),s=l.getContext("2d");a.onload=()=>{l.width=a.width,l.height=a.height,s.drawImage(a,0,0),l.toBlob(l=>{if(l){const o=e.name,a=o.lastIndexOf("."),s=a>0?o.substring(0,a)+".webp":o+".webp",i=new File([l],s,{type:"image/webp"});i.uid=e.uid,this.copyUploadPath(e,i),t(i)}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,l=e.clientY-o.top;t.style.opacity="1",t.style.left=a+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Yt=(0,V.A)(Jt,[["render",xt],["__scopeId","data-v-5e12bf57"]]);var Zt=Yt,eo=o(732),to=o(33892);const oo={class:"directory-suggestion-input",ref:"wrapperRef"},ao={class:"suggestion-dropdown"},lo={class:"suggestion-list"},so=["title","onMousedown"];function io(e,t,o,a,l,n){const r=G.WK;return(0,s.uX)(),(0,s.CE)("div",oo,[(0,s.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,s.bo)((0,s.Lk)("div",ao,[(0,s.Lk)("ul",lo,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.suggestions,(e,t)=>((0,s.uX)(),(0,s.CE)("li",{key:t,class:"suggestion-item",title:e.value,onMousedown:(0,ft.D$)(t=>n.selectItem(e),["prevent"])},(0,i.v_)(e.value),41,so))),128))])],512),[[ft.aG,l.dropdownVisible&&l.suggestions.length>0]])],512)}var no={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),l=Array.isArray(e.children)?e.children:[];t[a]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await At.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("/"),l=a[a.length-1]||"",s=a.slice(0,-1).filter(Boolean),i=s.length>0?`/${s.join("/")}/`:"/";return{segmentInput:l,parentPath:i}},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 l=t.toLowerCase();return a.filter(e=>e.name.toLowerCase().startsWith(l)).slice(0,10).map(e=>({value:e.path}))}}};const ro=(0,V.A)(no,[["render",io],["__scopeId","data-v-28b8eda7"]]);var co=ro,uo=o(17879);const po={class:"container"},ho={class:"upload-home"},mo={class:"quick-toolbar-actions"},fo={class:"quick-toolbar-actions-inner"},go={class:"header"},yo={class:"title"},bo={class:"title-crayon-text","aria-hidden":"true"},ko={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},vo={class:"dialog-section"},Co={class:"section-header"},wo={class:"section-title"},Fo={class:"section-content"},Lo={class:"dialog-section"},Uo={class:"section-header"},$o={class:"section-title"},So={class:"section-content"},To={class:"setting-item"},_o={class:"setting-label"},xo={key:0,class:"setting-item"},Ao={class:"setting-label"},Mo={class:"dialog-action"},Ro=["innerHTML"],Do={class:"dialog-footer"};function Eo(e,t,o,n,r,d){const c=uo.A,u=(0,s.g2)("font-awesome-icon"),p=l.S2,h=pt.c6,m=pt.Iy,f=pt.dW,g=co,y=G.WK,b=to.A,k=a.R7,v=eo.A,C=Zt,w=J.ll,F=J.MQ,L=O.qi,U=X.kZ,$=Ve,S=Q.A,T=H;return(0,s.uX)(),(0,s.CE)("div",po,[(0,s.Lk)("div",ho,[(0,s.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,s.bF)(f,{class:"more-dropdown desktop-only",trigger:"click",onCommand:d.handleDesktopMenuCommand},{dropdown:(0,s.k6)(()=>[(0,s.bF)(m,null,{default:(0,s.k6)(()=>[(0,s.bF)(h,{command:"showHistory"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.history")),1)]),_:1}),(0,s.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,s.bF)(h,{command:"toggleLanguage"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,s.bF)(h,{command:"viewDocs"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"more-button"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,s.Lk)("div",{class:(0,i.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,s.Lk)("div",{class:(0,i.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,s.uX)(),(0,s.Wv)(g,{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,s.uX)(),(0,s.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,s.uX)(),(0,s.Wv)(b,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,s.k6)(()=>[(0,s.bF)(p,{class:"directory-tree-trigger"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,s.Q3)("",!0)],2),(0,s.bF)(k,{content:e.$t("upload.switchUploadMethod"),placement:"bottom",disabled:d.disableTooltip,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,s.k6)(()=>["default"===r.uploadMethod?((0,s.uX)(),(0,s.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,s.uX)(),(0,s.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,s.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["content","disabled"]),(0,s.bF)(f,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,s.k6)(()=>[(0,s.bF)(m,null,{default:(0,s.k6)(()=>[(0,s.bF)(h,{command:"toggleTheme"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:d.getThemeIcon(),style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,s.eW)(" "+(0,i.v_)(d.getThemeText()),1)]),_:1}),(0,s.bF)(h,{command:"toggleUploadMethod"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{width:"16px","margin-right":"8px","text-align":"center"}},null,8,["icon"]),(0,s.eW)(" "+(0,i.v_)("default"===r.uploadMethod?e.$t("upload.pasteUpload"):e.$t("upload.fileUpload")),1)]),_:1}),(0,s.bF)(h,{command:"showHistory"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"history",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.history")),1)]),_:1}),(0,s.bF)(h,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"bullhorn",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.announcement")),1)]),_:1},8,["disabled"]),(0,s.bF)(h,{command:"toggleLanguage"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"globe",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)("zh-CN"===e.$i18n.locale?"English":"简体中文"),1)]),_:1}),(0,s.bF)(h,{command:"viewDocs"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"book",style:{width:"16px","margin-right":"8px","text-align":"center"}}),(0,s.eW)(" "+(0,i.v_)(e.$t("upload.viewDocs")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"mobile-more-button"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,s.Lk)("div",{class:(0,i.C4)(["quick-toolbar",{"is-expanded":r.isQuickToolbarOpen}]),onMouseleave:t[5]||(t[5]=(...e)=>d.handleQuickToolbarLeave&&d.handleQuickToolbarLeave(...e))},[(0,s.Lk)("div",mo,[(0,s.Lk)("div",fo,[(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.logout"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[2]||(t[2]=e=>d.handleQuickToolbarCommand("logout"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"sign-out-alt",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.manage"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[3]||(t[3]=e=>d.handleQuickToolbarCommand("manage"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"cog",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"]),(0,s.bF)(k,{disabled:d.disableTooltip||!r.isQuickToolbarOpen,content:e.$t("upload.linkFormat"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:t[4]||(t[4]=e=>d.handleQuickToolbarCommand("linkFormat"))},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"link",class:"quick-toolbar-icon"})]),_:1})]),_:1},8,["disabled","content"])])]),(0,s.bF)(k,{disabled:d.disableTooltip,content:e.$t("upload.settings"),placement:"left","hide-after":0,"show-after":1e3},{default:(0,s.k6)(()=>[(0,s.bF)(p,{class:"quick-toolbar-button",onClick:d.openCompressDialog},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"cloud-upload",class:"quick-toolbar-icon"})]),_:1},8,["onClick"])]),_:1},8,["disabled","content"]),(0,s.bF)(p,{class:(0,i.C4)(["quick-toolbar-button quick-toolbar-more",{"is-active":r.isQuickToolbarOpen}]),"aria-expanded":r.isQuickToolbarOpen,onMouseenter:d.handleQuickToolbarMoreEnter,onClick:d.toggleQuickToolbar},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"chevron-down",class:"quick-toolbar-icon quick-toolbar-toggle-icon"})]),_:1},8,["class","aria-expanded","onMouseenter","onClick"])],34),(0,s.bF)(v,{useConfigLink:!0}),(0,s.Lk)("div",go,[(0,s.Lk)("h1",yo,[(0,s.Lk)("span",bo,(0,i.v_)(d.ownerName)+" ImgHub",1),(0,s.Lk)("a",ko,(0,i.v_)(d.ownerName),1),t[24]||(t[24]=(0,s.eW)(" ImgHub ",-1))])]),(0,s.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,s.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 settings-dialog-scope"},{default:(0,s.k6)(()=>[(0,s.Lk)("div",vo,[(0,s.Lk)("div",Co,[(0,s.Lk)("span",wo,(0,i.v_)(e.$t("settings.defaultCopyLink")),1)]),(0,s.Lk)("div",Fo,[(0,s.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,s.k6)(()=>[(0,s.bF)(w,{value:"url",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"link",class:"radio-icon"}),(0,s.Lk)("span",null,(0,i.v_)(e.$t("settings.rawLink")),1)]),_:1}),(0,s.bF)(w,{value:"md",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"code",class:"radio-icon"}),t[25]||(t[25]=(0,s.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,s.bF)(w,{value:"html",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[26]||(t[26]=(0,s.Lk)("span",null,"HTML",-1))]),_:1}),(0,s.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[27]||(t[27]=(0,s.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,s.Lk)("div",Lo,[(0,s.Lk)("div",Uo,[(0,s.Lk)("span",$o,(0,i.v_)(e.$t("settings.customLink")),1),(0,s.bF)(k,{content:e.$t("settings.customLinkTooltip"),placement:"top","raw-content":""},{default:(0,s.k6)(()=>[(0,s.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1},8,["content"])]),(0,s.Lk)("div",So,[(0,s.Lk)("div",To,[(0,s.Lk)("span",_o,(0,i.v_)(e.$t("settings.enableCustom")),1),(0,s.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,s.uX)(),(0,s.CE)("div",xo,[(0,s.Lk)("span",Ao,(0,i.v_)(e.$t("settings.customPrefix")),1),(0,s.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,s.Q3)("",!0)])]),(0,s.Lk)("div",Mo,[(0,s.bF)(p,{type:"primary",onClick:t[9]||(t[9]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("settings.confirm")),1)]),_:1})])]),_:1},8,["title","modelValue","width"]),(0,s.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,s.bF)(S,{class:"footer"}),(0,s.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,s.k6)(()=>[(0,s.Lk)("span",Do,[(0,s.bF)(p,{type:"primary",onClick:d.acknowledgeAnnouncement},{default:(0,s.k6)(()=>[(0,s.eW)((0,i.v_)(e.$t("upload.announcementAck")),1)]),_:1},8,["onClick"])])]),default:(0,s.k6)(()=>[(0,s.Lk)("div",{innerHTML:r.announcementContent},null,8,Ro)]),_:1},8,["title","modelValue","width"]),(0,s.bF)(T,{show:r.showHistory,onClose:t[23]||(t[23]=e=>r.showHistory=!1)},null,8,["show"])])}o(13579);var Io=o(46638),Po=o(48903),No=o(90144),zo=o(62388),Wo={name:"UploadHome",mixins:[Po.A],data(){return{selectedUrlForm:(0,No.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,zo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,Rt.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:Zt,Footer:Q.A,ToggleDark:uo.A,Logo:eo.A,UploadHistory:H,UploadSettingsDialog:Ve,DirectoryTreePicker:to.A,DirectorySuggestionInput:co},methods:{async fetchAvailableChannels(){try{const e=await At.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,zo.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(){At.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,Io.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,Io.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 Vo=(0,V.A)(Wo,[["render",Eo],["__scopeId","data-v-06705292"]]);var Bo=Vo},2893:function(e,t,o){"use strict";o(85331)},4885:function(e,t,o){"use strict";o(85331)},10456:function(e,t,o){"use strict";o(85331)},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 l=t[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,o),l.l=!0,l.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 l in e)o.d(a,l,function(t){return e[t]}.bind(null,l));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 l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return i}),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 f}),o.d(t,"urltoImage",function(){return g}),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 s=function(e,t,o,a){return new(o||(o=Promise))(function(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,n)}r((a=a.apply(e,t||[])).next())})};function i(e,t=.92,o=a.JPEG){return s(this,void 0,void 0,function*(){return l(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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 s=atob(o[1]);let i=s.length;const n=new Uint8Array(i);for(;i--;)n[i]=s.charCodeAt(i);return l(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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"),l=a.getContext("2d");let s,i;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;i=e.width*t,s=e.height*t}else i=o.width||o.height*e.width/e.height||e.width,s=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(a.height=i,a.width=s):(a.height=s,a.width=i),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;case 2:l.translate(a.width,0),l.scale(-1,1),l.drawImage(e,0,0,a.width,a.height);break;case 4:l.translate(a.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-a.width,-a.height,a.width,a.height);break;case 5:l.translate(a.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-a.width,a.height,a.width);break;case 7:l.translate(a.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-a.height,0,a.height,a.width);break;default:l.drawImage(e,0,0,a.width,a.height)}return a})}function f(e){return fetch(e).then(e=>e.blob())}function g(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(l,s){function i(e){try{r(a.next(e))}catch(e){s(e)}}function n(e){try{r(a.throw(e))}catch(e){s(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(i,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 s=o.split(",")[0].match(/:(.*?);/)[1],n=a.JPEG;l(t.type)&&(n=t.type,s=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield i(u,t.quality,n),f=yield d(h,s);return f.size>e.size?e:f})}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,s=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=a.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const k=[null,null];for(let e=1;e<=7;e++){y=yield i(g,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-s)-Math.abs(.75*t.length-s))[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)},17879:function(e,t,o){"use strict";o.d(t,{A:function(){return m}});var a=o(56768),l=o(45130),s=o(24232);const i={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)(l.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,s.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",i,[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-2122c62a"]]);var m=h},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),l=(o(85331),o(30694),o(49385)),s=(o(37952),o(30650)),i=(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"},f={class:"node-label"},g={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=i.qk,$=s.Vc,S=l.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",f,(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",g,[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)},50333:function(e,t,o){"use strict";o(85331),o(29092)},62388:function(e,t,o){"use strict";o.d(t,{G:function(){return l}});var a=o(46638);function l(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 l=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return l.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 i}});o(44114);var a=o(25507),l=o(16915);let s=!1;async function i(e,t={}){t.credentials="include",t.headers={...t.headers};const o=await fetch(e,t);return 401!==o.status||s||(s=!0,a.A.commit("setAdminLoggedIn",!1),l.A.push("/adminLogin").finally(()=>{s=!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),l=o(24232);const s={key:0,class:"page-footer"},i=["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",s,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,l.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,i)])]))}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)},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)},97769:function(e,t,o){"use strict";o.d(t,{A:function(){return u}});var a=o(56768);const l={key:0,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},s={key:1,class:"channel-svg-icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},i={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",`channel-brand-${o.type}`]}),["telegram"===o.type?((0,a.uX)(),(0,a.CE)("svg",l,[...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",s,[...t[1]||(t[1]=[(0,a.Fv)('',9)])])):"webdav"===o.type?((0,a.uX)(),(0,a.CE)("svg",i,[...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-ce6ff2ce"]]);var u=c}}]); -//# sourceMappingURL=927.1adefc82.js.map \ No newline at end of file diff --git a/frontend-dist/js/927.1adefc82.js.gz b/frontend-dist/js/927.1adefc82.js.gz deleted file mode 100644 index 65e9ba98c8e208ea340268b0835c7b50ad674774..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32692 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

jHJbMA>LL>_ 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 diff --git a/frontend-dist/js/927.1adefc82.js.map b/frontend-dist/js/927.1adefc82.js.map deleted file mode 100644 index 33415dbd..00000000 --- a/frontend-dist/js/927.1adefc82.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/927.1adefc82.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/./src/components/upload/UploadHistory.vue?942e","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?de1f","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?6ec5","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?05f3","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/utils/upload/directoryTraversal.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?fcf5","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/ToggleDark.vue?4a88","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","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/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/icons/ChannelIcon.vue?3436","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue","webpack://sanyue_imghub/./src/components/icons/ChannelIcon.vue?8c05"],"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__","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 \"show-after\": 1000\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 \"show-after\": 1000\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=7da2f8c2&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=7da2f8c2&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-7da2f8c2\"]])\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 settings-dialog-scope upload-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\"\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\"\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\"\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\"\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\"\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\"\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=1c6b8366\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport \"@/styles/settings-dialog.css?vue&type=style&index=0&lang=css&external\"\nimport \"./UploadSettingsDialog.css?vue&type=style&index=1&lang=css&external\"\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=645a7810&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=645a7810&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-645a7810\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, 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 = [\"aria-label\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_6 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_7 = [\"aria-label\"];\nconst _hoisted_8 = [\"aria-pressed\"];\nconst _hoisted_9 = [\"aria-pressed\"];\nconst _hoisted_10 = {\n class: \"upload-list-container\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_12 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_13 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_14 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\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_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_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[2] || (_cache[2] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args)),\n onDropCapture: _cache[4] || (_cache[4] = _withModifiers((...args) => $options.handleDrop && $options.handleDrop(...args), [\"stop\", \"prevent\"]))\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(() => [...(_cache[12] || (_cache[12] = [_createElementVNode(\"svg\", {\n class: \"upload-plus-icon\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"1.25\",\n \"stroke-linecap\": \"round\",\n \"aria-hidden\": \"true\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 7v10\"\n }), _createElementVNode(\"path\", {\n d: \"M7 12h10\"\n })], -1)]))]),\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), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.selectFolderUpload'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n type: \"button\",\n class: _normalizeClass([\"folder-upload-icon-button\", {\n 'upload-list-busy': $data.fileList.length\n }]),\n \"aria-label\": _ctx.$t('upload.selectFolderUpload'),\n onClick: _cache[0] || (_cache[0] = _withModifiers((...args) => $options.openFolderPicker && $options.openFolderPicker(...args), [\"stop\", \"prevent\"]))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-open\"\n })], 10, _hoisted_4)]),\n _: 1\n }, 8, [\"disabled\", \"content\"])]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true), _createElementVNode(\"input\", {\n ref: \"folderInput\",\n class: \"folder-upload-input\",\n type: \"file\",\n webkitdirectory: \"\",\n directory: \"\",\n multiple: \"\",\n onChange: _cache[1] || (_cache[1] = (...args) => $options.handleFolderSelection && $options.handleFolderSelection(...args))\n }, null, 544)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [_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[5] || (_cache[5] = $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_6, [_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\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"paste-card-method-group\", {\n 'is-external': $data.pasteUploadMethod === 'external'\n }]),\n role: \"group\",\n \"aria-label\": _ctx.$t('upload.switchUploadMethod')\n }, [_createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'save'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'save',\n onClick: _cache[6] || (_cache[6] = $event => $data.pasteUploadMethod = 'save')\n }, _toDisplayString(_ctx.$t('upload.pasteSave')), 11, _hoisted_8), _createElementVNode(\"button\", {\n class: _normalizeClass([\"paste-card-method-button\", {\n 'is-active': $data.pasteUploadMethod === 'external'\n }]),\n type: \"button\",\n \"aria-pressed\": $data.pasteUploadMethod === 'external',\n onClick: _cache[7] || (_cache[7] = $event => $data.pasteUploadMethod = 'external')\n }, _toDisplayString(_ctx.$t('upload.pasteExternal')), 11, _hoisted_9)], 10, _hoisted_7)])]),\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 }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_10, [_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_11, [_createElementVNode(\"div\", _hoisted_12, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: _ctx.$t('upload.copyAll'),\n placement: \"top\",\n \"show-after\": 1000\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn modern-action-btn-copy\",\n onClick: _cache[8] || (_cache[8] = (...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 \"show-after\": 1000\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_13, [_createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('uploadForm.autoRetry')), 1), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $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[9] || (_cache[9] = (...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 \"show-after\": 1000\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_14, [_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.uid,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[11] || (_cache[11] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])])]),\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","function normalizePath(path = '') {\r\n return String(path)\r\n .replace(/\\\\/g, '/')\r\n .split('/')\r\n .filter(segment => segment && segment !== '.')\r\n .map(segment => segment === '..' ? '_' : segment)\r\n .join('/')\r\n}\r\n\r\nexport function getRelativeDirectory(relativePath = '') {\r\n const normalizedPath = normalizePath(relativePath)\r\n const lastSlashIndex = normalizedPath.lastIndexOf('/')\r\n return lastSlashIndex === -1 ? '' : normalizedPath.slice(0, lastSlashIndex)\r\n}\r\n\r\nexport function joinUploadFolder(baseFolder = '', relativeDirectory = '') {\r\n const hasLeadingSlash = /^[\\\\/]/.test(String(baseFolder).trim())\r\n const joinedPath = [normalizePath(baseFolder), normalizePath(relativeDirectory)]\r\n .filter(Boolean)\r\n .join('/')\r\n\r\n if (!joinedPath) return ''\r\n return hasLeadingSlash ? `/${joinedPath}` : joinedPath\r\n}\r\n\r\nexport function filesToUploadEntries(files = []) {\r\n return Array.from(files).map(file => ({\r\n file,\r\n relativePath: normalizePath(file.webkitRelativePath || file.relativePath || file.name)\r\n }))\r\n}\r\n\r\nfunction readFileEntry(entry) {\r\n return new Promise((resolve, reject) => entry.file(resolve, reject))\r\n}\r\n\r\nasync function readAllDirectoryEntries(directoryEntry) {\r\n const reader = directoryEntry.createReader()\r\n const entries = []\r\n\r\n // Chromium may return directory entries in batches (commonly 100 at a time).\r\n while (true) {\r\n const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject))\r\n if (!batch.length) break\r\n entries.push(...batch)\r\n }\r\n\r\n return entries\r\n}\r\n\r\nasync function collectFromEntry(entry, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, entry.name].filter(Boolean).join('/'))\r\n\r\n if (entry.isFile) {\r\n const file = await readFileEntry(entry)\r\n result.push({ file, relativePath })\r\n return\r\n }\r\n\r\n if (entry.isDirectory) {\r\n const children = await readAllDirectoryEntries(entry)\r\n for (const child of children) {\r\n await collectFromEntry(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nasync function collectFromHandle(handle, parentPath, result) {\r\n const relativePath = normalizePath([parentPath, handle.name].filter(Boolean).join('/'))\r\n\r\n if (handle.kind === 'file') {\r\n result.push({ file: await handle.getFile(), relativePath })\r\n return\r\n }\r\n\r\n if (handle.kind === 'directory') {\r\n for await (const child of handle.values()) {\r\n await collectFromHandle(child, relativePath, result)\r\n }\r\n }\r\n}\r\n\r\nexport async function collectFilesFromDataTransferItems(items = []) {\r\n const fileItems = Array.from(items).filter(item => item.kind === 'file')\r\n const result = []\r\n\r\n // Resolve handles while still in the drop/paste event call chain when possible.\r\n const handles = await Promise.all(fileItems.map(async item => {\r\n if (typeof item.getAsFileSystemHandle !== 'function') return null\r\n try {\r\n return await item.getAsFileSystemHandle()\r\n } catch {\r\n return null\r\n }\r\n }))\r\n\r\n for (let index = 0; index < fileItems.length; index++) {\r\n const item = fileItems[index]\r\n const handle = handles[index]\r\n\r\n if (handle) {\r\n await collectFromHandle(handle, '', result)\r\n continue\r\n }\r\n\r\n const entry = typeof item.webkitGetAsEntry === 'function' ? item.webkitGetAsEntry() : null\r\n if (entry) {\r\n await collectFromEntry(entry, '', result)\r\n continue\r\n }\r\n\r\n const file = item.getAsFile?.()\r\n if (file) result.push(...filesToUploadEntries([file]))\r\n }\r\n\r\n return result\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 { collectFilesFromDataTransferItems, filesToUploadEntries, getRelativeDirectory, joinUploadFolder } from '@/utils/upload/directoryTraversal';\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 localUidCounter: 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 createLocalUid() {\n this.localUidCounter += 1;\n return `local-${Date.now()}-${this.localUidCounter}`;\n },\n applyUploadPath(file, relativePath = file.name) {\n const normalizedRelativePath = String(relativePath || file.name).replace(/\\\\/g, '/').replace(/^\\/+/, '');\n file.uploadRelativePath = normalizedRelativePath;\n file.uploadFolder = joinUploadFolder(this.uploadFolder, getRelativeDirectory(normalizedRelativePath));\n return file;\n },\n copyUploadPath(sourceFile, targetFile) {\n targetFile.uploadRelativePath = sourceFile.uploadRelativePath || sourceFile.name;\n targetFile.uploadFolder = sourceFile.uploadFolder ?? this.uploadFolder;\n return targetFile;\n },\n getFileUploadFolder(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n return fileItem?.uploadFolder ?? file.file.uploadFolder ?? this.uploadFolder;\n },\n createUploadRequest(file) {\n return {\n file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, uploadedFile) => this.handleSuccess(response, uploadedFile),\n onError: (error, uploadedFile) => this.handleError(error, uploadedFile)\n };\n },\n async uploadLocalEntries(entries) {\n await Promise.allSettled(entries.map(async ({\n file,\n relativePath\n }) => {\n file.uid = this.createLocalUid();\n this.applyUploadPath(file, relativePath);\n const processedFile = await this.beforeUpload(file);\n if (processedFile instanceof File) {\n this.uploadFile(this.createUploadRequest(processedFile));\n }\n }));\n },\n openFolderPicker() {\n this.$refs.folderInput?.click();\n },\n async handleFolderSelection(event) {\n const entries = filesToUploadEntries(event.target.files);\n event.target.value = '';\n await this.uploadLocalEntries(entries);\n },\n async handleDrop(event) {\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer) return;\n const entries = dataTransfer.items?.length ? await collectFilesFromDataTransferItems(dataTransfer.items) : filesToUploadEntries(dataTransfer.files);\n if (entries.length) await this.uploadLocalEntries(entries);\n },\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 const targetUploadFolder = this.getFileUploadFolder(file);\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(targetUploadFolder),\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 const targetUploadFolder = this.getFileUploadFolder(file);\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(targetUploadFolder) + '&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(targetUploadFolder) + '&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(targetUploadFolder) + '&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.uploadRelativePath || 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 uploadFolder: file.uploadFolder ?? this.uploadFolder,\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 this.copyUploadPath(processedFile, newFile);\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n pushFileToQueue(newFile, needServerCompress);\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\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 pushFileToQueue(processedFile, needServerCompress);\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 async handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const items = Array.from(clipboardData.items || []);\n const fileItems = items.filter(item => item.kind === 'file');\n const stringItems = items.filter(item => item.kind === 'string');\n if (fileItems.length > 0) {\n event.preventDefault();\n const entries = await collectFilesFromDataTransferItems(fileItems);\n if (entries.length) await this.uploadLocalEntries(entries);\n } else if (clipboardData.files?.length) {\n event.preventDefault();\n await this.uploadLocalEntries(filesToUploadEntries(clipboardData.files));\n }\n if (stringItems.length > 0) this.uploadFromUrl(stringItems);\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 === '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 const targetUploadFolder = this.getFileUploadFolder(file);\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: targetUploadFolder\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 this.copyUploadPath(file, webpFile);\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=5e12bf57&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=5e12bf57&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-5e12bf57\"]])\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 \"show-after\": 1000\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 settings-dialog-scope\"\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=06705292&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=06705292&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-06705292\"]])\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 { 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=2122c62a&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=2122c62a&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-2122c62a\"]])\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 * 路径验证器模块\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, 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', `channel-brand-${$props.type}`]\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=ce6ff2ce&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=ce6ff2ce&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-ce6ff2ce\"]])\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__","_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","length","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","Date","dateStr","getFullYear","getMonth","padStart","getDate","push","Object","keys","sort","a","b","map","mounted","savedMode","localStorage","getItem","methods","loadAllHistory","loadMore","history","JSON","parse","e","console","error","setTimeout","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","then","removeItem","$message","success","catch","filter","i","stringify","fileName","imageExtensions","extension","split","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","window","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","width","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","Number","emits","get","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_el_upload","_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","onDropCapture","handleDrop","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","viewBox","fill","stroke","d","innerHTML","disabled","disableTooltip","openFolderPicker","webkitdirectory","directory","onChange","handleFolderSelection","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","role","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","copyAll","dropdown","autoReUpload","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","uid","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","f","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","assign","K","Uint32Array","rotr","x","n","processBlock","block","H","W","s0","s1","c","g","h","S1","temp1","S0","maj","temp2","createSha256","buffer","Uint8Array","bufferLength","totalLength","update","offset","needed","toCopy","Math","subarray","digest","bitLength","view","DataView","setUint32","floor","hex","toString","async","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","normalizePath","path","replace","segment","join","getRelativeDirectory","relativePath","normalizedPath","lastSlashIndex","joinUploadFolder","baseFolder","relativeDirectory","hasLeadingSlash","test","trim","joinedPath","filesToUploadEntries","files","from","webkitRelativePath","readFileEntry","entry","Promise","resolve","reject","readAllDirectoryEntries","directoryEntry","reader","createReader","entries","batch","readEntries","collectFromEntry","parentPath","result","isFile","isDirectory","children","child","collectFromHandle","handle","kind","values","getFile","collectFilesFromDataTransferItems","fileItems","handles","all","getAsFileSystemHandle","index","webkitGetAsEntry","getAsFile","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","localUidCounter","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","$refs","scrollContainer","setScrollTop","deep","immediate","$store","commit","location","protocol","host","document","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","createLocalUid","now","applyUploadPath","normalizedRelativePath","uploadRelativePath","copyUploadPath","sourceFile","targetFile","getFileUploadFolder","fileItem","find","createUploadRequest","onProgress","evt","response","uploadedFile","uploadLocalEntries","allSettled","processedFile","File","folderInput","click","dataTransfer","waitingItem","uploadingItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","targetUploadFolder","abortController","AbortController","formData","FormData","append","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","percent","res","code","finally","delete","fileSize","fileType","totalChunks","ceil","precomputedSha256","initFormData","initResponse","Error","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","pool","currentIndex","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","saveToHistory","newRecord","scheduleAutoRetry","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","URL","createObjectURL","newFile","controller","clear","tagName","clipboardData","stringItems","preventDefault","uploadFromUrl","validUrls","getAsString","callback","mdUrl","htmlUrl","ubbUrl","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","blob","checkResult","retryFailedFiles","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","btoa","fromCharCode","uploadInfoRes","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","fetch","body","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","undefined","etag","partNumber","progress","completeResponse","oid","img","Image","canvas","createElement","ctx","getContext","onload","height","drawImage","toBlob","originalName","newName","webpFile","revokeObjectURL","onerror","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","y","clientY","top","opacity","beforeDestroy","inputValue","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","suggestions","onMousedown","selectItem","dropdownVisible","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","refreshSuggestions","ensureDirectoryTreeLoaded","normalizeDirectoryPath","inputRef","focus","getDirectorySuggestions","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","node","isArray","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","some","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","isNaN","openUrlDialog","handleLogout","authType","withCredentials","closeQuickToolbar","handleShowAnnouncement","next","openAnnouncement","info","getAnnouncementRefreshAt","refreshAt","announcementRefreshAt","isFinite","acknowledgedRefreshAt","t","module","exports","r","o","l","call","m","defineProperty","enumerable","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","w","PNG","JPEG","GIF","u","throw","done","apply","toDataURL","match","atob","charCodeAt","Blob","download","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","readAsDataURL","scale","orientation","rotate","PI","translate","quality","accuracy","abs","pow","v","id","handleToggleClick","mode","isAuto","isDark","cx","cy","mask","x1","y1","x2","y2","_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","validateFolderPath","i18n","global","dotPattern","invalidChars","isRedirecting","options","credentials","router","disableFooter","thisYear","footerLink","xmlns","$attrs","fontAwesomeIcon","inheritAttrs","icons","cfr2","s3","discord"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/927.1adefc82.js.map.gz b/frontend-dist/js/927.1adefc82.js.map.gz deleted file mode 100644 index 5e0439ebf34f96ae4d73e1ec5986fb2dc3d372f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82764 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

vX*v+lD1xR8bv-w5 zTW)8qR7!tbbp2qh1W^J@PbE3BD4v^O;yZSvhQwA)vYw}L#ux8U%OUh=J9c2>2hjT?jbUio*?;o!CCoQalzbvbT)?O! z*i_Sr2C#YKcK^j!K$mp>tGj0}44(gJwG3g4sRuCZ>|-v5cX-e1gj+GI8*;q6g%|thz8rjVZR78^H*UXu_x5X>*WbN+?h^iVff<>=_kg?q z5lTvf?cGb@x~At_`(3wVnNB`Mf8pDvqzgra%^~+q;V=?V+$f&tEzMb8_8<~&3X&!q z0J($@>l`4q(=oVeNL8-WlpBGl-vkhJ?e#2v?7U-(c=RmH)|QX+$)VEQ2ntPWbkqA? zAT)$u&YY35Mw0@}1y;ve@XRG<*O1YWlLhumhW?YVCdO$h9#3?>k2lc_#V|8z#t$kv z>*&+SX|s@#CRRMcA*y0#=d+HweDN{fAvXeK2`}NtozVabB_3=4=@w?jKN}X?19IP)#SQ4}r$|>>Mjqgxoh_26%k_3Cn7OoH4~;Oo&l7 zx|%TY7f1nhaw0#NY^tOHN6uht@_r9O|77w>l*=XYC7G8wmYMLLhzC7#TbTZ;(~`3G z1%qI3m5-SU6ysTb*L8frx4B~4)VK`flFyaQu3e(KuY?W-JfMQbeZ64u0JcetxLb$4 zAh7C+uGJ|iQ))@0ZfA-E0iHds}w>|A?Ts1s%)0IUh z^U$W!(s{Nbc$hSvz*+zOKMdZwN*Lq%&D;IwJ|tSp&F`N5{?7UI)Zs}@?)y6z0E6dW z2PNmlr`K=Z;`FFY!|S(S7+n3BoUcQg1TAPOvaiI=fAbyaweadN=8s_->NJ|Rr={Mi znmNJzG7tx=kcoiIj}c;0BaDP2cIgJ^Ut!T68zJz$bqG!~u)2c`eb+7#Id2K&>H2A; z3(-Dehj7|7j{c-f3ck2`^V)l$*12%0f8&l+Vl~3h0Id8D_yhTY=>`6;?O-vVE9LkV z#gGjtSIS9`;2%>7&16E-;y~7TE0#Az!%L>bbWCQKQrA<_#>>*^67gus@_ln5TsR7x zSeQs7!m3`FF^Bq+_;werp*U+@J}D##94P2wjcN}P(v8_1KX}+Sp@Ml74Ww5O2qINF zlsZHdKu9I^MQApU2HSu7O8@%B!OLF^-nn-7NyJk809***2F0;wZuC;w+Akv;O&~vmD;AiIOm#PJ7pz=E&jn@2X9^O z-~40$vzMY{fKwn~qgOFxz1U@#>5w`~^emxkL@z$o3gJ#*8{&2&xQM&+Otst`8A2|q zyF5lEA3Jy_>M(DBrxH6;FrE~C1}}fs|MXP`IaE9JP;f(y|Gg#57d_uP)N###v|LEe z#`d2upU6ACrGm7VYfb|9qou?I;VE?F37Mj!Mo^u$7*kfYX3l>W> z6gS79;RAKe16epH4u^qV={>7$IiTnD`AfxG0nOWv+3BpNcV32J?u2i7huwt*tNpl> zOK88c_EE=Ou$^2QDm*3pUaJK@FQhaXq5T;7nkz7SI%Q^Oqa)=p8K- zt{AhVu&*IOQ3WS^(v5Q1o=xXXNN}zlf<}qwW%}q7b}bZ$!a<}Xw~m+(=~`+?+2fiT z105skMmrH+t!!s>{G`W2PWHltk+*3Mo8%Y-qvQ@pT8$ijZ1C>X0wxZEq}Nocu`pPD zsv%x58QD&loFSu~@L(A(2BlNC=F{FzXP}m^qYdkPN9uS zbeT(f-1NWwc;kf|#31thohzV~mE=7VR+z#cpl5}DV<%uvlxMW8jZmqZxSU6Bj{WnW zt>3!7dEviPl5V!Hc9eHks4LF#_QX-AIa4ilm@~vDnj#tAkU0*nygG7@toHiBPcd07 z?e4?RfL!8+&wy3mZ(#;$Y>(RW>C~N>`(L!PNAi?76%{W*VviAEbotz35On>?QmHjR zXSI=!y>C$4D*etZfv3RiT*ri%TqC<;obm;8;NLMaC-LwG_i<_QGB9&20XPO;_*{3n zLR#Su7ud))G$e(aw7QDv3`bde6=IJtsE>t#Sw4s769wAGWgOy0jVYd`w)b zb7uRuJwG6T>GLx=b&>;ltf>!Pc{Wlkj63z{eu<$F9yn&kyzn>1^b;+$L$03EDkK15 zJRBguv(x0ug)H;~&L>Y~2@^Qpkx8*1#8NERF$X?1$~iW?$lK1mo4Un2F28k$Z2;l( zuQV3C@RQV#vfPbKQB$e)A+nqO`ZXPE z82IeU;OfWgw?5c->Fxgcui#zLt6$!I^$Xypxv0k1*G7 zo*jI04SemdT?Yf{6;szKgQsS5{;K~&E^B7^9Jl(_tawQDY{*$nu+h_nD2$ zeffxyTk;b zaA2x5Xhd@YmEsr>5DsJSa?jcYww*>`Ep$GpX4(=-um9F6pStbfj&gCq3MRd^!dlTmUW3Izb0V^f zHYaw3Xg{{PH0O49?IQo8z$Lu@xVf-vS5}{C*y3sOV6!=K1XDh^ctW-3^U5x3*RFiffN2zp#x5&du3*ZZ&uj2iKv2Q1UGP5?cNSNJrS%$g zfFuZ49-D`uK?iwxFKhT7>_4)>VC+2Z$xMQ^LQy4yA{KH6-9cgA1!J}+xsvTjLBT=o zyjOIK(WI@2e1mCgW)02RP8*M{=oShg$$5Y&r;#S`#Ekc*H$@OSKdwy*K1M_hHl)Y2~kG222_AHx(yr{+Q~b}Zk9ZaXb z6?zj*kfn-utqXG{9ZxqWFgqx99h_a4{`zg#Vt+2!^UaAF;vZ)<_E?QZBPguF8e4^8 zILnslESrAd9y9~<#8F68Az&xwS|MHIkd2900N!H3+oa)P@V*fKahQa-LWis1t~gkb z$ZWsOg2Vg05!0P#;V~`)_W+)?7=D3;?|GfT-QRKN#IP$V*dg;=;_x1a+!TOzMWFjy zt)6EFR%caQX^yS*7#;|X{wVMXSfLf4OCZ)PQ$}UkI-ckv0&M?+fq6FC+d55yrOR2DPXkH28scSc1GSQ;_-2~ z%IXoON0%n=HTFO=umkczV~>{)3PotEum*_h{kY0oS!JI)Zh9jZmTKV}0rI;YJILeH zpfJ_30?BJQ)8!eogeP5^%%k0V3sa@Sv@$bAYS|4laOd*Qv@%0#m<=0sEN3BDq!6tJ z%8oY?4i^2@Nh8Kn(~l~4}nI$(AZ;v5CbLHjTRR%ZhIA|$8y>S7VS{yC{knT-J9 zsKmRiqTLA4q6NmQ-PRg5-k1%Cd_8l<2|rQzQV4tI3@s_z4JRt2^>&9)r66o5ESVxn zl=9QnqF$^O4JxMxjXgo5(QuIK*_IRFz!QbNd5_j=m_?7Y)UXSaaj_j0o3Llt%BNeV zZ%LI&7kO>~w>`xu?>+)=DV}`1q!?wmqPIPBg|Nb)DAShU57K(rb}=j{OwDpm#DDX_j2PI!V90hI52e z#%=Y%AilcA?(fg))VA2`eOSUU*!dXCv&P(2Vm`dWoJ{yRR6d}56t)|h17U=PUwXje zM||xA(F6Y>%|{Qmpq--B?O1^B)}qxq3Bflde0P%Yos|a#SQP?u(XG44=ktNg0$5018L5ZOk7VQDm%&bBooU+v;e{R zXwT$#L7^DgRN>)9Tpp_h!^3{nwmNMr%8_## zPEh71k#U14w&;y;%FSB{Mhs_kt3m!Q+Vqc5PVLcdI(es1Y||eL`Cd^VY7~l#6u`{4 z<2e>vh2jeR;O7^Mc68NPLB9QaYfpgx*&9r*aI9eNVJv;Dc6k^?0P_qf0RE1bAAY6Q z9v5>X`_oK*Qf9^r`IuHcY7^+tb5z&#p zcjr}^X?!;ft7tcv(G^=EXbeZddP%}31y+ zu1XD@7WWj*3`LVcK@QC{aD@PiKWgNo+cjG_r_@ZG@FC*w#BPi;?}VA8i_*@n=XU*~ zw9~hOUYDkCEk?P3sKWy7ZAd<0NI;!jm^@^pasrvc(PY8IkAYJ07LvhI&j|*zBq&Uj z$|#xHlTU+&v!LY>LZ-Li<5!ANz9ZsILR!O3fYV;~*Qk*&DNZ606H8%q&?L`Ba{@3R z&znq+`z0Krr8(jD0@-$wS)wv?8SNmMdTbveYK@y!*I!=XQXS!7yUhu|=g8oP%jATj z8O0LYKR-+mU!{lIfiS~5+r1R$#Dd&hRHmf0l`IDlam)Nfr_C=nO| znq+d#xgFPIa=~WgpjyH#g3Wh~K}kkIKEGggrgsm^L(FOrR58O_O%}wfP%i&eya@b< z5Xmcxc92d94H@OLGWtdt#TjSMFl`-2Qv^^EbUN2Du`)KQe~PCwHu5TrJB}RPT1`W$ z6#~h^d1Ruj`}PAFW_YN}|+kRuo%FR0k_I{BYOXHr3w+c`dM zGN-gK#%vbG*c5RBI&x^GCQ_EzlyB1rp(t$`pTrFIM8?j7{mO3&C56IOQpA*;Qqw@V zs3M~IEJTgpw>nnm>iy_lLu$JJL?IbL73o@P45aYhabTc|o?e1PDaAw`)r{0YXz9I= zBt42WDk|yj)%(!5I#%cE1L|E!2}xuRAqBcx4~P~LT@E7!GLiH+W(tKFo~db2pyK58 zVu6YL9wz6e#V2@-14%+zsRJM}$HQD*UNk%NGU0=1A&a&^gky$lu0ldqMzo^BG+g(H z^pO;ha8^>nTjBGv>E&e^vt^mEWf^~s_;oE$x*Q{ znXFSF-A>Yo1KD9V)2Wn_aT?PyJntvIe)Gb{2bV~+Px5{nA{OGO)$r7eJV1uOHotoN z?v)owv_kmJKfjLrz{$u{FT+U`@YimT=fF{Nh|I^_v@LudCPN!UU-1nfs)r6BELuMzzQbyJqZD%S;Y(EI!e?A|n z*!N#mRJEn6=9s?!Sxt`P`#*kN&i6mFTGIDlG?gEO?|(S4@qGUi1aYk6hWfSeC()1{ zaohI14f#kzJy}#z+=_Z}OUgW<{;en_(nw=~L|NEElzf_LB`V9%{XJy$<`@dsp{h-a zJn{|-0tqr0jS9(Bqo46A#zjTxkY_F|g=-T17+c*Li8Af*NtPUVmL+#_c;zA5Prf#; z6J?3Ws8$K9Vfm|EI_Xmw`idO?uclGTyP_hBu-YGv1lufuA0-LAWgUlL|CKmmre0sb7r znjqg3EwsZeJqu?MFvv!lA;49PeBHh>p3_uDs&d<>K}9k((y0qpjIHQq#n3)zeSI6= z(NN_Oh5Z#Nr7+D2*ExZM!c9_exB+GBPm}rX`9>pv@JiI}nB=u8RzkW#;4aBHnrd|S zqI%Sd8jd>f?1cqL(HpyvhC}VT-LB=yc)O8{T9Rjmv=LQ-SF^I|dF~2SV6qT5Cl>9t zC7bhsg)e>OM3u0-8jmY9O;HOS0|Af!j^m9z1K_@+_xirL7O*`@P>a9kFhZ zPD!R{kykwM(dBf2qir|50S_NnxF8b<8E~5h+Ld z>eL#NlZ0^IP;HQ<=?N(zK6HyIF)h!`yik-FwNYvk5l3eRkA35Tv^;ys^j2BT3HW@# z7FaSn9TAB|>kU~1zLp3%MRA8rQsIsg+&}rN2X?l1aFjLgM-Wt zjL0d7eu`E zqsaDuu*g>b*A&?lPGn=n0W6%rVTu_|QPQa^%rDNB&$nV&uK1?bp$<`JRGRKCbipgxkThhx97F2@vD<) zZZW~psBEq`8RmW2BTYw85M6f3c5*Ywc3PcY+wy51iB!hy;oc3r7BR^QIWaByG34Qs z()3I*junWhBngYpW55wt`$-P-B$tWZX?vD4DdoaH*)50_{F71+mXyi)5_^WitNdRR zy=E#UecIsySVk|f+R+dqRd81Ba;67qPeZEd^>m8z6?l~rHOV6wUJd@r>?C4UrwZB3 zv>e^$N16KXe7*7UtNn9-zx(Q^5SjA!mz&?cJ$UZ5{)_JnE}R`)y|DS*A2$B*_4ju! z-hKMJ{<%x*H=iGTa&2(oFa0}bArscKw>Dn*jKKGw`*7o>+gv2)I5~(Oj80p>0D@fh4?2r0tt`J&8UzKWVMPlXK#g0F2H*Vs-`D z0eOJwlh*1?d|0+<{+=dWOCslO zc|}RJf6jHS3|ZIY`H)`4QEA;Ge=80jfLsAVNW#qk?lyQB|F;zlKpf~++!;as7P<^q zYut|GL`#f&o7-~&HgYoM&}O@h1Cv1RPs_2qe9p7rwiRYWAp-AFT*jtjp0nm5=BR_) zO|?pbnry3Ku^%3ROXY}RPlQJL&=Ew*rb?b65^cqHRL*$|ewjuo-NywTjB-x4}smi#``j)qB zdHC^hx?TQfB7k)Y0@g1=el+>t`VjwZL<*QO(|C_qy=408;x+TwWI4NeQZUuu5kG}speopY_tMuF8#mnp8zR^GT`TDKDku*1K zesWspxwkj}_zk34|Mm@OA4nhvO@DDeWGa^W|9Mf0W2sC1bD#GwUnD6QNDn3WhvFNO z8Aa+OlGMo0!FTxoc)X<7VX4vy+|RnEXD&&nNtom{!Y^cL^Zlnu3maFSp&|Tv_|r5z z@ZL#@CN7rN)+DOzm1ODe*$a2C!G)b>TwlL=3!kRa;MFe&e?2>R`@LkE>gEJ$PJDmo z{N3BHZC-yD14H6!+AR?reCQZ!n4)fJ^7y@z5}5)FgAV=nUj}boWiXg@t;|lT&gY4j z*1&Ib4fv`TXG?hh4}-U^65OocytVPst-<+M)^DF9e{a10P5;wZH$Hj)`#Tpmzk8|w z##@7{7X~k%|NhST&1)ZSynAc#&etSCLO91zBE$=D<_um46nHkI#>HZ5j_IFOiG}ze zBb^FC*1|us#*Bw5H781d^{ovuQhmcIbc_ThA43mtdP?4Tf@qf}zM4nDq*^!(r$^bVaL>zMvxuE4dF zm~6&GH$M7q^ULSHzjLL3@m&A%-z0>jXsZpb{|`IkQhx8`Z_YHEr9!ibnoX2%HcMxA z7D_0v{4ftkNHCFBHHT0pT83g}TSz(XnUD^^>^$KH`#K$W1q80GBW3;Or%c*`6kWo8P^)ar;wz$Xy-0`A(84F!Wb?c-s=z$!hh$`hzzlJKbSh zb0i-kbH4lLTZ6y9OxQUC&KCDCo*O*>$)wb5N|VxVX|L3rkaE(a(jMuI1Si8gcci>j zkfx;>>9n*a{Y3hy^c(3Z>3>O6($Az_QbT$~+9?%zy0aZT#RH3`=YtqD-E20Slg;Mt zW^-?IBKPQ?X7h~HZ04KILbEyDY|b>Br<={SpZv7h{LNGUYwBma8qMY-&F0SH3{Q`2 zyQ3-ceyR-6Dap!CZ z+w(e*E6HI%^5A2$k3I1#au9btx81`7fV`FfJt;i}?d&|=^Ezu!O(iz? z##~tQHsmB>U?!Ngth`C?=ee;`7HeSCC3Ae8O4_ppzUh3cZ zy8rC0yDz=IdE>_5#mgJ--U4y#s~a0Hecr!*zJKX&n_s-W`Ndy1ufMx_<7w%{zcY)1 zHwh+Y)b06LT}ej+`c6bu9g$`~v30X)p4EPd&WkYCDMd23Bl&biSXuVFp6!7z0V>V) z>`uGXigF3zTOcSO*awqac!l`TUPg}f=<%VxZyf*mpy;(**IcmVdDjhwz8{=!PCyj- zf1QA5J0kBRs#-dPr?_3$LM77|w+nE@k0$L3*PQs@A4zIi)#T=c^oYRqFB~K&(*DCT zy@K=z2oMJ?2;yk9rMXoJ+9ytdnJ;#P12aV)!epUk@J5K-wic-uT$oRK!44LCbHLe3 zM@;V+_H&J0*GO=DfF}v2BTv!h#4((L`rmBmIE+y>BDNNbDr`ml54X2NVjCDWH8T3x zl@U+yu^y5*ep*IHg#+a4J)4; zN?N&u%`n^xf_@;U9!9d;uD9z#XrM(#~=el zD>)Fh^qz#5)}rY+R!8=i7udi~i4c|$o*Dm#em=F-as2San=F-9R#wnT1-afrNiCPl zB^+*Zcqj$NkNh7t7(PIQ`j7|nLy3ADxi!bcOCKzlK>(3gcoAwk7h)F2n59pwaz*K> zuzbz~hy9(Wsc$&2$+f3uhztPlT;gJKeGjaTwcwdcxh;m5L9Ch1BQsa0HBtLms;#-$ate4tiSkfz`-m9ma% zH40QgbrrnRP=%IMG*nZiilQK+4kd>xl`>K_sjAnIrsMXMY86#T(^W-1peQv|)1_)z zK@~D0D4~C9wFp+xE6C6!t*RqD#L8hqtA-<2>J?POa0iT<9*#z-)sapB>SY~HeQc*yV!t zVW~4khl{<11>0GeH(S=WNm1oVQ6TqEr;mVqbK+5KR%$nz&E~|BYPpWem9i!owKCGH zdaJG>U8|_TuZ$|vG+mP`HB_mVHA$_is8TO$vQn-fqf*h$O0@z=p#PL5!sawot(G-e zt(K8qtE!R!N)|yGNU5`b5J>1%Q}n1)@?Ebpf5d<=Jc)tK?pPW&JV^v4>{X(}i#q*1 zpcRMr#R&e%p+g5%RTUj6T1_<{1okoj zA29aPy{54D0Lbt6(vn=OYN(ETZI$J!g6fKHNJ<%16y3nhRa8ZnDo_CJR~4kzb+b~h zB1MM};UBmI$R;qcUJvidH>iuOILvgU;!ZF zYNe*PlnPQ{x*DpMtGc8ZNUgy*6r@(*)I?RKqDv|qOqyl_wj}%?O1cVCw5l$vWn>t2 zI5LrL7~wx;yHt?|lv34^royqSph~T-M*mVE4OMG(RmSr*jFwzSu;eN->Z&0_B-v_J zl?GN=b?iG-OuG$bjt={u}mMt7ve@qe@*jT9hIbR8uuWQgx&lh9TEb1=g!# zAZWIN)S7N|4g_&4~V`KnZNI z$dbZA5oAfDkp-P{$dWm1$*PXjx}s8S$vn1rWF@GxvahmVtBy^b)v}H>O*152*N|4L z=q;sOMs*!{gQQd{sH)a=*{CBJZ1h{HRFPUMYrwxN$fy#$C_pwks+4PFOB&)wqDJxKx(3Dyo-(Bvhp7 zWkZTa7s5s*i?SGLhYnTL%E7Ub2EwvZuBno)DVRN)hJg%N^6=k?X0)oJ%32i}s@Bp_ z8E}WxGC-n=DpiqDffGSRHQ4$}1p!0AaFUMdI);PQQ8ZMBS^%jT@ox?3nDN(XjPI7U`O1z|N`F@XpaI6PV@>_<%oE)O*~1wQ3n@3apV{Lp4Qh z8OW&CfJfllj{rj9B~RgL~7m@_afYjD&XnpCZzGBg|hOIoU6xeA}DEv1Y! zVA~a>8&X9_I>>XHif_C%EG$X7ic~DcE2s(^Q&Euyr=AW~v5bc_SP4L2y{5x&IM+?B zim%-CA1YJB;$Y!aN0o|dwDdB9MItVu^GE^e1R8(D)RTXn|XdcVO zu$sWALAjx8h7|rwTP>rSQO4}NUajcAmzK(sRz^ly*IJ+>!FW{^q{CKIF}DQC1q2}- z>2Thv3aaC~SOpnyeWDWq=^jX{R!23(fK8(zEFmEUwp0afIMIOu1H}!&z{1}VwF5z_ zfLEo8utb0Wsg)|`6)*!8FGd~rFGoV7fj6^E&P3TzPz@6?GJpumWRMD~X=Nk)r6LWM zDf~uO8{hnp0wYuFL}*C-_Ei<>cy2nJf;tE$Qe8s^h(;9y)yhP8#Y6@O2N_wfBYf_v zs7laNMw$UfeH~SRQK<$h!(iyyQ32hRqRMrQvhY`>j?d>ZP#B!2GC9+gvVs5wiiVk- ztl-OCnH;7{1#|)xEFjhlO;$k6t*A0(3{;c{)!<@9WrOgis$nssEa?U^ z;AF4BsSU@Tfy(S}4JmbeRl?GQOmHq4s0xR*jue=`ffN{{T1RCAW&n}^j80Qf1$GH+ z>sq~{%SMGr7b;MbT*G6oAuM2)QKb${P(!skzAKa86%}7E$<+~vJrtlN1^BB$4ro$9 zF0N(TdYNz%N)`$}Kx*V<0xkm_zk+W^u=#2R?0DFObzKH_2t-+h15J}*2$ix1GOG$4 zpsFAp1Y1W%8mxqhbRAeU-VSmF8FdhD%0#-SKPxJ#>O}WYt|JYK^g60y zzLqHPVQ_#kBDKItSTR&B{M}NKq2m*$igg!so;s=n3DNEhOd=sY8L$>*4b}qg|FTg- zur#nnn8Yeb!;4ramm!Kjy0$<@8q}h{@A0av!C_$F!$ie5sTNjs==c-{>Wlb+N=OWL zoCX9{M!?G}1~OnNV1I(#4ZBy-G@0(-u9;B6#0$YIc4|*=ZWe=Y>Y6Ss@P*nsSD^*l609_$NsG%A-j=-Hu z!P~KpbbR|J92TTgy!q*Ft<;c;CxTn6s7S%vN5#`6>=@25IB)AZGC(A$*AU*Jcv&NH zM>bF_+XCCI)D#t;iEvX${PyL#fq>)*z`s8%o!qsKMAHGlvF zTLU&2Y>gTbFluGP2zPU}M$|v_tdi))!*Ym@RR-jagegG*8URLS)DRFjpaiC%p*qH- zf)o&@LX{Hch;SnV=}5;nY!w0THY!Nb3_t|1cAB666@)E#8%a}3h3!znl&P3 zwx~E8$zepCm3VPhqC&e;Mn)B1@QEC&YLtg2KQ zq^ly3f#^R}J;}(qGAroHoS+MI2j>*Xxn%=x3p!RLt3-U%ffK=oFC$Gg4ET*@UUJ0i z_`0r;J1m?O6}(-lc!}hsxC@mP1CBd6De%hp%FRxpeu2LZnRN|XbS=&=u@&JUFH98?%H}AH?s6!5r_fu zA_*2H>ymwP%XaLI-R)R*XLf_YpvaQUm|`is*wz5^-v{5h6j_uz$Yyqd^@GJKl65_G z&UY@XLgAnT0lF&q1m|L4h=dsCqHqX159R`n>aP?D`#OQ0W0*TQ9m3dn0zPmG3TCZ+ z;K5wss)}+4KFS?*P;MmFJo#~E#Wubrb#6{J_<;{_Vc#Ip#0Zzf#litx5@-NrjBg>R zM-JXbD3jOH+-Z>lD^65tRa`sh;Mi`u9C*MMqHv5MS7@uUv!}8XBZ}!~Y%7x1L0j;T zkYDBNXklDvF)IXZ3kU!E3ocFOBZb*B#S-Y9QfE) zj4_IBA!0{lUSn*l5?R4*Z!sEzBMG)u0WR29D`IRrU?ZlW%YiaCNsf6qs8JyrKNd@MX$&f5QwT3WZRP=5o9~?ku69FJo0}9 z*G^ADGCnrAcHjfs#@^4sw&w%eo+zFQY@wEl0*S@jNtSI?3qvV;6a>~PP+&Pd9uG%^ z$N+6+I2GEeHttkqAKF4Vl9EZ#wx?!S#}H;iAYDbaYCBM5i)kfwNsZL-w$23E_BzOR z&_=d{#gxDo1KR=5sspw_G$ixHY^xRpMQ)vRxtI?pFbB;Q33Z{ZhiqXar1c@lcF;k# zSWo2E;k690NPY|vPlFD!?X{6@&qubs4zlfaknKR3p(5LXvL1!DJrCN#u?umj*tXZf zwrX$|Y&-C=?Vy8g(W-FDt(p+nIGwT&gVF8a-$l2GI9dEbAj_LsC(-L)j$s-9)iZEE z4yT$-HHc_FI+3WLCCn!C1#m5e^MpWOy#*YS8kYo@CI=9mE+m>KCVWW+kh%)pa3;Y; zgArI6)dPz;zdHzLASV1p81$)zLb*!`3pj<7hu)Y^hLd>~YCO|)G&~t`-2egnQYg(H zG;vhnm=vy)6OCR1-lV7D)R9mqZZm+~q&EVQaJU$VkgpJ4F%^h7IUy|+JWy&qb%WD% zb$kl78|nsEMtXU8B7te(QX?M4P+pnv$i2d+b3z$e2oEZmt7xdSdl2~4nMn+IG~)Ue zF8pl-OaU!Hg3ln_<}ldL!e~C?VW0JyD+x7_&hi?gPE6u~tDxsbnb^I=zya7Xzn6Hs z6Co*LReZIOU@?M^Oe5jxkj$qXmWLjnhS^{=8xNMg}hQZ!j8bOyYo}83&`usZJd)9vJ!tO}rv>L|*Bq6w^0E zD8zU=3?)QzF7bZ@A-wPe)B8MFNVhCc2cz3j)jf zOpiFiU^e51O<}o!>I7MGqD#2p4XyXaL+Bz*VXgMgm8@y)V#Q9S;Dzw2Oc%{mhBywV z!^x?<&BNF`)tE_A=RyP_(T#~#FuffE%+D9Y#f&+a<3z-$WFTqSLqGzAnZYnT2v4Wl zY)2KXX%C^;Nh5}*6JbtJS5Dm{j#r(|rR8JHvt%(-KXnZ29wHJ=Gk3@bwCva4@^d>4vCfpYo8%DyQPh8-! zqr2&l+>9y~LPvKe^WnTLyWIG>r`;@))**s~Mtjga&8uQMBs3^|O>3FZi&Lo({bdvC zc%sBJ8nLh$3ooAuhsYLlR5O~&I)NxqG9hygw`)AZ>`gQ<87{)vT<2y!`Ntnb`TpC- zZ_~F0<9_@5x7N3Id3DAwT_gBD|K^_J`1ox!{SyaWFFA-F#qqalY5r`Av^qm9etU~% ze+z8hsQQoht(LEkllInr|NMiUl{>v_e?}&|G{o{@e`{O4O%dW7flai=hSzas>tvHf zh57E+)}GMixb;l*R(dy+w2W<$w4RWh?|yZ=xcx`xdp2sxFT5q-VQ&bre#cuge)oU! z5nF4TzWpVe;`TrJCEGX4{4<}k{SRLDzG?gRd)*J)KI+Y1_^|E&<+p9xw?Ff3+pqlq zYqbo%|0QTXK?(XzA`JQg*N5D=dZ!<#PeDImZ4DRnNf0j32>c3L3HtP@dC(6syR}z* z$zSmX{eV8hk$d<_^A}0cQ4R+8q6|-#MJ#t7i!9()2mL_n$1Df^fSE+l*W);Xe&DvT z=j$4e>E4!wnQ z+rOsf4M*OCsJTI}P0kaoFcTG5DYiEOrSLgdbg@hE`^>knMKuW3QeE!0u=U;~P5G38^%qstrpoL}`9+&kTC{0-y^FTEs%b6D7OhkvZ9eQO zqUSU#Ex)FT0iW2(T8r)eAnOXiNG=nTnaW&il@$%#24}?3p7T_Ad20*PR4u7;pXS{7 zh!{`SbPOA7te7dt4(xZ_1v+hkc?*pjwvNe@8yh7$93@wO5z%w!JTeJ=HHB`qK7HrZ zt<7l;_EAFn({Zl6hy7rJe(+`en~5uC04Tq-^c+q;<*eO%WXKpjyUhPwefdnyEK1^)Oug8M7%7>wW}|;3q&p@@qjK|h zE%Z@lX)N#aN#DpLB73lVcYS4WBoYyIYVyh@OV@?J#bCL`j*G(8Ct8u%m;!lG9-GX| zs-8_w^M>8pwUnJHOCFuFj?yZwV=q%sc9HUy9=N7`=eKYCq0>QfB1eV_;Q zC&4DH2CSi|^EeXNDc6^2W&|7a7HRZ&9%YaBH^k?n#OB$7Itqe6%Q9Kwb&-jH+ZSff zEP9vlYtPkA3aHm>zSx^0HhINtlDozIy1qU8;o|Ay?++KBSJz)YuY!K?_4@qci=QQ3 zc3o0^o_VG8Q981V-ft9`WKmh2+v*ysoFwV`%Z9l1x>OC|#hCpCbplr^NEQAx9Nr&v zCgh{+m^q?1Wo6anQYL;eoyU03`r}1k*nMK(@+SdC-?+OodHv11{ta27X{JJ~!+{MObb3B1k%Uq(ej_ip)~Jeis3+mGJJO`D$=cE61FRb4a>BhT@NTLKs^$@7GH zmcdMlh!|lFuuK$QyIwIGb<$XHXeX^mQBG#jx#XL7&C-*7Gr0DQ<+yzzSf*?L>f!c= zxGoz|n#%`=`$m#o5IpFtv!G~t1@`-7`M5;nj0iQFY^ zepeU}fz}D;L3BZgJ}FF+IV6oxBHS2lmLhBZ ziAwAT7xaT4gMRRs=G8bq*jaIg7c#gu;DfN4^A>u_#=GqX>b!?Y(RF~q;VIVgfmY2CP3CkfX zqkkK*?5x+36q%%3L({iTD_0a|fwiLOD_@qT;xWMhXO^`=V)m7F_8r=)wK2T7&Xjtw zyn6inb)Ff@FC7-mv47&a=COJHSds(X_~ z*sb`ywaN?0lX6_SiDW=z(eB17!%*C#kGj@TX-W7J2mb`XpBOkgFofI#fWtnSl zQ)SZ5I>@7pLy0KwHEG-{Ytg&#WK&QK_7zu`h23dU`-ru2X?MxyzqAzTk(TZ8)59J0 z(l7Fg*oEU8zz``B2^kOtD@wWg8U_>Zf|4JKC@(jrQ1x~rV!4r2Y}gd0az<@j9m>iy zRi{E7JS{)qDeb9y1&g*T_Zila3;~}KV=&efX!d5o68EN1QUu;|phv*(D*MJbnWdaWh7OQoDHLw%_a6r zqscY}6@)X|h<(R4F^~7x&W+{li)7Mhj%FiY%Qh$DsrI2oAgV84h~6ezr}i=t+oV8` zii(kEn6QYn6Qf!%X}(EYj}{<}OR-(BJzl3IHfbiN2XXQ^u#x6z)fx*V?;BE9Y{?US zope}Qd{AK0>MkahYF2FU9FCUPRQ%yVgi0 zbXph?a;K8|;DJZJ4dEDGdn%RXUq?zYmZZ8xbqSbj~HqbgS%N1F2@SroZ zwoIQ|daHewuuQtcYw8`0qx_Y4gcqQVG({n74M`{_V4JIrLA^pa$WTkF>?bBDTclga z0a<*xd6TO*v);>sEzGNZ@fNeq)t$A?2yNBQ2KEDIh`1Mi`JnL)TT^|4ehGUD`K<2c zIZFJUJgy|Z4=(e+sJU!kiek2VGcr6kFjE~!((LO>T?ID3v~gXwj7prc`KPRIkf$VU zuAoRftdc70EwpoSI*H*=tT?Pv2rN?T&R6H5@J{Nyx3=o$-Kc~<%9UUZ&0dOD#(;i< zjy$N#n7T!!6lPPH@_FU8*yLqhnDY;-bx7FVmW4v&cu%hGjf@&Rt@@N-LxZQ;gQ@-m zvKyU$+=Z$ck+&#&p;FjcU#g)6kLVh7rTkPI7JaTxou?vtYitpk$*S*)Gtt)H@xGG; ze0$lbyf5bPX1f;c2MQ=SkBW{f;)CJ1K6Z+Ia2jRDV9p^v$0lo5QjhWh@zZ=;o~wVX zZB?he%RhRnK@C-rZnvfo>)>t|<&6dM+>|es-QSwLZf?cyD#~+P=Nx=-_8O&`_{aW+ z(~wl>RjPD)#u@3a665g=8fu$;>80+{bvN8{U8!GEn(hkLe8yLe@so_I9n&x0;zQK^ zUT;nH@N76JvXvB{P+I;}r|}DH-s`CN!oFWFtbOCga}c!eG!?;GuIS3msqh&iri0`6 z5p-}NcRAvveHSIX<)#oGj)8wHGFN)cL*Wb|xPR0HWS+Gqym?z&wNYw|;+NdMWhU90 z_8T3FS-J=w6x|RcLU%05x?TF7=4{)FU$$g`yp8gRsWno96BniglL-R+Im)s-oL6x) zId^bdh@S%9Nt3kOc+WiZOhO)Z=2l@&!duDHptyiF&PI@kx_g|bIX7>ap?I2wt&LqUwW ziTsnm!sW3)n;vv%N1r?LVRvq@_uFOqYE1dj1jw`9?3P7|!EgEDAbW4O9rkJ!RKDw% z;5Z54(X$U|)GOFcL|m7UC_-&pK9fW!y2}8;_iYq0*`)DEU$M;8kd=kn5TY@J_|!^b1NyDmtbf!_EHUQx8Jqi;L|6MLRk#^;cU$8y{OV(xCu2g87N1cn>nRQVXE8vyQM6KSflD=E|xh zbzhVZz-G}>*lxB|*8}S}uMM}-YcO*ZtZB9h>w8dGoXdnYAhyPl2c~QqR|;UU1yl^R z;S{#wQM$V(z!c?W#u>jmb``~OT|_Z!)5PXzAYReV23hcW)X>zO!?<;2+4aIJHHO+o zW$mI88SijW9`NrS?!H5K97V(MxD!Rg=h%M`8iBLxkuB%ny_%=Smywo&`#AOvB{WJ5 z^k#p)*O7j(x1Wr@Mn*#J#j=46nIR4rX(rs=F4o3L?mtPfclUDbA P5d8CBYl@A?(mw?NCsetz diff --git a/frontend-dist/js/app.13a65c7a.js b/frontend-dist/js/app.13a65c7a.js new file mode 100644 index 00000000..f84e0ac0 --- /dev/null +++ b/frontend-dist/js/app.13a65c7a.js @@ -0,0 +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(903),t.e(173),t.e(30),t.e(807)]).then(t.bind(t,37807)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(63)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(30),t.e(549)]).then(t.bind(t,11017)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(322),t.e(997)]).then(t.bind(t,60997)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(322),t.e(339)]).then(t.bind(t,27339)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(803)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(743).then(t.bind(t,92743))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(787)]).then(t.bind(t,75875))}],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":"文件上传","selectFolderUpload":"选择文件夹上传","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.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

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

示例:wallpaper,photos,album

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

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

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存"},"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","selectFolderUpload":"Choose a folder to 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","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

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

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"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),x=t(12375),R=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),z=t(18422),V=t(17214),H=t(44845),j=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),xe=t(87849),Re=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),ze=t(70577),Ve=t(93212),He=t(40275),je=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,x.Xb,R.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,z.cb,V.MT,H.vH,j.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,xe.H9,Re.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,ze.xi,Ve._2,He.DX,je.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+"."+{22:"b436b08e",63:"503c70e6",339:"7edc2fbc",380:"62235203",549:"ffe205fb",711:"936a7109",743:"f28adaf7",773:"f0780366",787:"d0dbc2dd",803:"4f2ba956",807:"0a4d199f",903:"1e4b549d",997:"55a5bae5"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{30:"c12a4e5b",63:"398231b7",173:"f8fd1fa2",322:"2b40f004",339:"de55c4be",549:"0f00dee2",711:"e6dbd5da",743:"4cb567b6",773:"b55efe26",787:"f6f7607a",803:"398231b7",807:"413b2fce",997:"c0e2a060"}[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"),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
3B26 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 IO@K220JAZk2><{9 literal 0 HcmV?d00001 diff --git a/frontend-dist/js/app.79c9e5f6.js.map b/frontend-dist/js/app.13a65c7a.js.map similarity index 99% rename from frontend-dist/js/app.79c9e5f6.js.map rename to frontend-dist/js/app.13a65c7a.js.map index b67f0e9c..39f44341 100644 --- a/frontend-dist/js/app.79c9e5f6.js.map +++ b/frontend-dist/js/app.13a65c7a.js.map @@ -1 +1 @@ -{"version":3,"file":"js/app.79c9e5f6.js","mappings":"mEAGA,MAAMA,EAAWC,EAAAA,EAAMC,OAAO,CAC5BC,QAAiD,IACjDC,iBAAiB,IAGnB,K,iFCDA,MAAMC,EAAiBA,CAACC,EAAIC,EAAMC,KAChCP,EAAAA,EAAMQ,IAAI,yBAA0B,CAClCL,iBAAiB,IAChBM,KAAKC,IACN,MAAMC,EAAOD,EAAIC,MAAQ,CAAC,EAG1B,IAAKA,EAAKC,cAER,OADAC,EAAAA,EAAMC,OAAO,oBAAoB,GAC1BP,IAIT,GAAII,EAAKI,OAA2B,UAAlBJ,EAAKK,SAErB,OADAH,EAAAA,EAAMC,OAAO,oBAAoB,GAC1BP,IAKT,MAAMU,EAAcJ,EAAAA,EAAMK,MAAMC,cAChCN,EAAAA,EAAMC,OAAO,oBAAoB,GACjB,eAAZT,EAAGe,MACDH,GACFI,EAAAA,GAAUC,MAAMC,EAAAA,GAAKC,OAAOC,EAAE,uBAEhClB,EAAK,CAAEa,KAAM,gBAEbb,MAEDmB,MAAM,KACP,MAAMT,EAAcJ,EAAAA,EAAMK,MAAMC,cAChCN,EAAAA,EAAMC,OAAO,oBAAoB,GACjB,eAAZT,EAAGe,MACDH,GACFI,EAAAA,GAAUC,MAAMC,EAAAA,GAAKC,OAAOC,EAAE,uBAEhClB,EAAK,CAAEa,KAAM,gBAEbb,OAMAoB,EAAgBA,CAACtB,EAAIC,EAAMC,KAC/BP,EAAAA,EAAMQ,IAAI,yBAA0B,CAClCL,iBAAiB,IAChBM,KAAKC,IACN,MAAMC,EAAOD,EAAIC,MAAQ,CAAC,EAG1B,IAAKA,EAAKiB,aAER,OADAf,EAAAA,EAAMC,OAAO,mBAAmB,GACzBP,IAIT,GAAII,EAAKI,MAEP,OADAF,EAAAA,EAAMC,OAAO,mBAAmB,GACzBP,IAKT,MAAMU,EAAcJ,EAAAA,EAAMK,MAAMW,aAChChB,EAAAA,EAAMC,OAAO,mBAAmB,GAChB,UAAZT,EAAGe,MACDH,GACFI,EAAAA,GAAUC,MAAMC,EAAAA,GAAKC,OAAOC,EAAE,uBAEhClB,EAAK,CAAEa,KAAM,WAEbb,MAEDmB,MAAM,KACP,MAAMT,EAAcJ,EAAAA,EAAMK,MAAMW,aAChChB,EAAAA,EAAMC,OAAO,mBAAmB,GAChB,UAAZT,EAAGe,MACDH,GACFI,EAAAA,GAAUC,MAAMC,EAAAA,GAAKC,OAAOC,EAAE,uBAEhClB,EAAK,CAAEa,KAAM,WAEbb,OAKAuB,EAAS,CACb,CACEC,KAAM,IACNX,KAAM,OACNY,UAAWA,IAAM,uEACjBC,YAAaN,GAEf,CACEI,KAAM,SACNX,KAAM,QACNY,UAAWA,IAAM,gEAEnB,CACED,KAAM,aACNX,KAAM,YACNY,UAAWA,IAAM,gFACjBC,YAAa7B,GAEf,CACE2B,KAAM,kBACNX,KAAM,iBACNY,UAAWA,IAAM,iFACjBC,YAAa7B,GAEf,CACE2B,KAAM,gBACNX,KAAM,eACNY,UAAWA,IAAM,iFACjBC,YAAa7B,GAEf,CACE2B,KAAM,cACNX,KAAM,aACNY,UAAWA,IAAM,iEAEnB,CACED,KAAM,YACNX,KAAM,WACNY,UAAWA,IAAM,uDAEnB,CACED,KAAM,eACNX,KAAM,cACNY,UAAWA,IAAM,wDAEnB,CACED,KAAM,gBACNX,KAAM,eACNY,UAAWA,IAAM,gCAEnB,CACED,KAAM,mBACNX,KAAM,WACNY,UAAWA,IAAM,yDAIfE,GAASC,EAAAA,EAAAA,IAAa,CAC1BC,SAASC,EAAAA,EAAAA,IAAiBC,KAC1BR,WAGF,K,6EC1JA,KAAeS,EAAAA,EAAAA,IAAY,CACzBrB,MAAO,CACLsB,WAAY,KACZC,eAAgB,GAEhBtB,eAAe,EACfU,cAAc,EACda,aAAc,UACdC,kBAAmB,GACnBC,eAAgB,CACdC,sBAAkBC,EAClBC,qBAAiBD,EACjBE,iBAAaF,EACbG,oBAAgBH,EAChBI,mBAAeJ,GAEjBK,mBAAoB,GACpBC,iBAAkB,KAClBC,gBAAgB,EAChBC,oBAAqB,GACrBC,aAAc,GACdC,kBAAmB,CACjBC,aAAc,QACdC,gBAAiB,IAEnBC,iBAAkB,CAChBF,aAAc,QACdC,gBAAiB,IAEnBE,cAAc,EAEdC,YAAa,KACbC,aAAa,GAEfC,QAAS,CACPvB,WAAYtB,GAASA,EAAMsB,WAC3BC,eAAgBvB,GAASA,EAAMuB,eAC/BtB,cAAeD,GAASA,EAAMC,cAC9BU,aAAcX,GAASA,EAAMW,aAC7BmC,kBAAmB9C,GAASA,EAAMwB,aAClCC,kBAAmBzB,GAASA,EAAMyB,kBAClCC,eAAgB1B,GAASA,EAAM0B,eAC/BO,mBAAoBjC,GAASA,EAAMiC,mBACnCC,iBAAkBlC,GAASA,EAAMkC,iBACjCE,oBAAqBpC,GAASA,EAAMoC,oBACpCE,kBAAmBtC,GAASA,EAAMsC,kBAClCH,eAAgBnC,GAASA,EAAMmC,eAC/BM,iBAAkBzC,GAASA,EAAMyC,iBACjCM,kBAAoB/C,GACXA,EAAMqC,cAAgBW,aAAaC,QAAQ,iBAAmB,GAEvEN,YAAa3C,GAASA,EAAM2C,YAC5BC,YAAa5C,GAASA,EAAM4C,YAC5BM,kBAAmBlD,GAASA,EAAM0C,cAEpCS,UAAW,CACTC,aAAAA,CAAcpD,EAAOsB,GACnBtB,EAAMsB,WAAaA,CACrB,EACA+B,iBAAAA,CAAkBrD,EAAOuB,GACvBvB,EAAMuB,eAAiBA,CACzB,EACA+B,gBAAAA,CAAiBtD,EAAOuD,GACtBvD,EAAMC,cAAgBsD,CACxB,EACAC,eAAAA,CAAgBxD,EAAOuD,GACrBvD,EAAMW,aAAe4C,CACvB,EACAE,eAAAA,CAAgBzD,EAAOwB,GACrBxB,EAAMwB,aAAeA,CACvB,EACAkC,oBAAAA,CAAqB1D,EAAOyB,GAC1BzB,EAAMyB,kBAAoBA,CAC5B,EACAkC,iBAAAA,CAAkB3D,GAAO,IAAE4D,EAAG,MAAEC,IAC9B7D,EAAM0B,eAAekC,GAAOC,CAC9B,EACAC,qBAAAA,CAAsB9D,EAAO+D,GAC3B/D,EAAMiC,mBAAqB8B,CAC7B,EACAC,mBAAAA,CAAoBhE,EAAOiE,GACzBjE,EAAMkC,iBAAmB+B,CAC3B,EACAC,sBAAAA,CAAuBlE,EAAOoC,GAC5BpC,EAAMoC,oBAAsBA,CAC9B,EACA+B,oBAAAA,CAAqBnE,GAAO,IAAE4D,EAAG,MAAEC,IACjC7D,EAAMsC,kBAAkBsB,GAAOC,CACjC,EACAO,iBAAAA,CAAkBpE,EAAOmC,GACvBnC,EAAMmC,eAAiBA,CACzB,EACAkC,mBAAAA,CAAoBrE,GAAO,IAAE4D,EAAG,MAAEC,IAChC7D,EAAMyC,iBAAiBmB,GAAOC,CAChC,EACAS,cAAAA,CAAetE,EAAO2C,GACpB3C,EAAM2C,YAAcA,CACtB,EACA4B,cAAAA,CAAevE,EAAO4C,GACpB5C,EAAM4C,YAAcA,CACtB,EACA4B,oBAAAA,CAAqBxE,EAAOyE,GAC1BzE,EAAMqC,aAAeoC,EACrBzB,aAAa0B,QAAQ,eAAgBD,EACvC,EACAE,oBAAAA,CAAqB3E,EAAO0C,GAC1B1C,EAAM0C,aAAeA,CACvB,GAEFkC,QAAS,CACP,qBAAMC,EAAgB,OAAEjF,IACtB,IACE,MAAMkF,QAAiBhG,EAAAA,EAAMQ,IAAI,mBACjCM,EAAO,gBAAiBkF,EAASrF,KACnC,CAAE,MAAOW,GACP2E,QAAQC,IAAI5E,EACd,CACF,EACA,yBAAM6E,EAAoB,OAAErF,IAC1B,IACE,MAAMkF,QAAiBhG,EAAAA,EAAMQ,IAAI,uBAC3B4F,EAAaJ,EAASrF,KAAKA,KAC3B8B,EAAiB2D,EAAWC,IAAIC,IAC7B,CACLC,IAAK,uBAAyBD,EAAUC,aAMtCC,QAAQC,IAAIhE,EAAe4D,IAAIC,GAC5B,IAAIE,QAAQ,CAACE,EAASC,KAC3B,MAAMC,EAAM,IAAIC,MAChBD,EAAIE,OAASJ,EACbE,EAAIG,QAAUJ,EACdC,EAAII,IAAMV,EAAUC,QAGxBzF,EAAO,oBAAqB2B,EAC9B,CAAE,MAAOnB,GACP2E,QAAQC,IAAI5E,EACd,CACF,GAEF2F,QAAS,CACT,EACAC,QAAS,EAACC,EAAAA,EAAAA,GAAqB,CAE7BC,MAAO,CACL,aACA,eACA,oBACA,iBACA,qBACA,mBACA,iBACA,sBACA,eACA,oBACA,mBACA,eACA,cACA,mB,g+nDClKN,MAAMC,EAAa,aAEnB,SAASC,IACP,MAAMC,EAASrD,aAAaC,QAAQkD,GACpC,MAAe,UAAXE,GAAiC,OAAXA,EAAwBA,EAC3C,OACT,CAEA,MAAMhG,GAAOiG,EAAAA,EAAAA,IAAW,CACtBC,QAAQ,EACRC,OAAQJ,IACRK,eAAgB,QAChBC,SAAU,CAAE,QAASC,EAAMC,GAAEA,KAGxB,SAASC,EAAUL,GACxBnG,EAAKC,OAAOkG,OAASA,EACrBxD,aAAa0B,QAAQyB,EAAYK,GACjCM,SAASC,gBAAgBC,KAAkB,UAAXR,EAAqB,QAAU,IACjE,CAGA,O,ksCCuEA,IACIS,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,EACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,EACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,EAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,EACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,GACAC,GAAAA,I,4CChMG,SAASC,GAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,GAAyB,SAAkB,eAC3CC,EAAgC,MACtC,OAAO,YAAc,SAAaA,EAA+B,CAC/DjH,OAAQ+G,EAASG,eAChB,CACDC,SAAS,SAAS,IAAM,EAAC,SAAaH,KACtCI,EAAG,GACF,EAAG,CAAC,UACT,C,mDCNA,IACE,IAAAnO,GACE,MAAO,CACLoO,WAAY,KACZC,oBAAqB,KAEzB,EACAC,SAAU,KACL,SAAW,CAAC,aAAc,gBAC7B,aAAAL,GACE,MAA6B,UAAtBM,KAAKC,MAAMzH,OAAqB,KAAaI,GAAA,CACtD,GAEF,OAAAsH,GAEEF,KAAKG,UAAU,KACbH,KAAKI,wBACLJ,KAAKK,4BAET,EACA,aAAAC,GAEMN,KAAKF,qBACPE,KAAKF,oBAAoBS,YAE7B,EACAC,MAAO,CAAC,EACRC,QAAS,CACP,qBAAAL,GACE,IAEE,GAAI,MAAkBvO,MAAMiH,SAAS4H,MAEnC,YADAV,KAAKH,YAAa,SAAkB/G,SAAS4H,OAK/CV,KAAKH,YAAa,SAAkB/G,SAAS4H,KAAM,CACjDC,WAAY,CACVC,MAAO,gBACPC,WAAY,OACZC,SAAU,SACVC,cAAe,IACfC,YAAY,EACZC,aAAa,GAEfC,SAAU,CACRC,EAAG,SACHC,EAAG,YAGPrK,QAAQC,IAAI,6CACd,CAAE,MAAO5E,GACP2E,QAAQ3E,MAAM,0CAA2CA,EAC3D,CACF,EACA,wBAAAiO,GAEEL,KAAKF,oBAAsB,IAAIuB,iBAAiBlM,IAC9C,MAAMmM,EAAcxI,SAASyI,cAAc,6BACvCD,EAEEtB,KAAKH,YACPG,KAAKH,WAAW2B,QAAQ,CACtBN,SAAU,CACRC,EAAG,SACHC,EAAG,YAMLpB,KAAKH,YACPG,KAAKH,WAAW2B,QAAQ,CACtBN,SAAU,CACRC,EAAG,SACHC,EAAG,cAMbpB,KAAKF,oBAAoB2B,QAAQ3I,SAAS4H,KAAM,CAC9CgB,WAAW,EACXC,SAAS,GAEb,I,YCrFJ,MAAMC,IAA2B,QAAgB,GAAQ,CAAC,CAAC,SAAS3C,MAEpE,U,kECgBA4C,EAAAA,GAAQC,OAAOC,IAEf,MAAMC,IAAMC,EAAAA,EAAAA,IAAUC,IAChBC,IAAOC,EAAAA,EAAAA,MAEbJ,GAAIlP,UAAU,oBAAqBuP,EAAAA,IACnC,IAAK,MAAOzM,GAAK9C,MAAcwP,OAAOC,QAAQC,IAC1CR,GAAIlP,UAAU8C,GAAK9C,IAIvB,MAAM2P,GAAoBA,KACtB,MAAMC,EAAc5J,SAASC,gBAC7B,IAAI4J,EAGJ,GAAIhR,GAAAA,EAAMK,MAAM4C,aAA2C,OAA5BjD,GAAAA,EAAMK,MAAM2C,YAEvCgO,EAAahR,GAAAA,EAAMK,MAAM2C,gBACtB,CAGH,GADAgO,EAAaC,OAAOC,WAAW,gCAAgCC,SAC1DH,EAAY,CACb,MAAMI,EAAM,IAAIC,KACVC,EAAOF,EAAIG,WACjBP,EAAaM,GAAQ,IAAMA,EAAO,CACtC,CAEAtR,GAAAA,EAAMC,OAAO,iBAAkB+Q,EACnC,CAEIA,EACAD,EAAYS,UAAUrB,IAAI,QAE1BY,EAAYS,UAAUC,OAAO,SAI/BC,GAAsBV,IACxB,MAAMD,EAAc5J,SAASC,gBACzB4J,EACAD,EAAYS,UAAUrB,IAAI,QAE1BY,EAAYS,UAAUC,OAAO,SAK/BE,GAAmBhQ,IACrBwF,SAASyK,MAAQjQ,GAAYkQ,WAAa,iBAIxCC,GAAiBA,CAACd,EAAYrP,KAEhC,MAAMoQ,EAAgB5K,SAAS6K,iBAAiB,yEAChDD,EAAcE,QAAQC,GAAQA,EAAKT,UAEnC,MAAMU,EAAWhL,SAASiL,cAAc,QAClCC,EAAgBlL,SAASiL,cAAc,QACvCE,EAAenL,SAASiL,cAAc,QAC5CD,EAASI,IAAM,OACfF,EAAcE,IAAM,mBACpBD,EAAaC,IAAM,YAEfvB,GACAmB,EAASK,KAAO7Q,GAAY8Q,UAAY,8BACxCJ,EAAcG,KAAO7Q,GAAY8Q,UAAY,8BAC7CH,EAAaE,KAAO7Q,GAAY8Q,UAAY,gCAE5CN,EAASK,KAAO7Q,GAAY8Q,UAAY,yBACxCJ,EAAcG,KAAO7Q,GAAY8Q,UAAY,yBAC7CH,EAAaE,KAAO7Q,GAAY8Q,UAAY,0BAGhDtL,SAASqJ,KAAKkC,YAAYP,GAC1BhL,SAASqJ,KAAKkC,YAAYL,GAC1BlL,SAASqJ,KAAKkC,YAAYJ,IAG9BtS,GAAAA,EAAM2S,SAAS,mBAAmB/S,KAAK,KAEnCkR,KAGAa,GAAgB3R,GAAAA,EAAMkD,QAAQvB,YAC9BmQ,GAAe9R,GAAAA,EAAMK,MAAM2C,YAAahD,GAAAA,EAAMkD,QAAQvB,YAGtD3B,GAAAA,EAAM4S,UAAU,CAACC,EAAUxS,KACD,mBAAlBwS,EAASC,MAA6B9S,GAAAA,EAAMK,MAAM4C,cAClDyO,GAAmBrR,EAAM2C,aAEzB8O,GAAezR,EAAM2C,YAAahD,GAAAA,EAAMkD,QAAQvB,aAI9B,mBAAlBkR,EAASC,MAA8BD,EAASE,UAEhDjC,KAEAgB,GAAe9R,GAAAA,EAAMK,MAAM2C,YAAahD,GAAAA,EAAMkD,QAAQvB,eAI9D0O,GAAI2C,IAAIhT,GAAAA,GAAOgT,IAAI3R,GAAAA,GAAQ2R,IAAIC,EAAAA,GAAaD,IAAItS,GAAAA,IAAMwS,MAAM,UAC7DrS,MAAMJ,IACL2E,QAAQ3E,MAAM,qCAAsCA,GACpD4P,GAAI2C,IAAIhT,GAAAA,GAAOgT,IAAI3R,GAAAA,GAAQ2R,IAAIC,EAAAA,GAAaD,IAAItS,GAAAA,IAAMsS,IAAIxC,IAAM0C,MAAM,S,GClItEC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBpR,IAAjBqR,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAE,EAAoBJ,GAAUK,KAAKF,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAGpEI,EAAOD,OACf,CAGAH,EAAoBO,EAAIF,E,WCzBxB,IAAIG,EAAW,GACfR,EAAoBS,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIR,EAASS,OAAQD,IAAK,CACrCL,EAAWH,EAASQ,GAAG,GACvBJ,EAAKJ,EAASQ,GAAG,GACjBH,EAAWL,EAASQ,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIR,EAASM,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAatD,OAAO6D,KAAKpB,EAAoBS,GAAGY,MAAM,SAASxQ,GAAO,OAAOmP,EAAoBS,EAAE5P,GAAK8P,EAASQ,GAAK,GAChKR,EAASW,OAAOH,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACbV,EAASc,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACE/R,IAAN0S,IAAiBb,EAASa,EAC/B,CACD,CACA,OAAOb,CArBP,CAJCG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIR,EAASS,OAAQD,EAAI,GAAKR,EAASQ,EAAI,GAAG,GAAKH,EAAUG,IAAKR,EAASQ,GAAKR,EAASQ,EAAI,GACrGR,EAASQ,GAAK,CAACL,EAAUC,EAAIC,EAwB/B,C,eC5BAb,EAAoBwB,EAAI,SAASpB,GAChC,IAAIqB,EAASrB,GAAUA,EAAOsB,WAC7B,WAAa,OAAOtB,EAAO,UAAY,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAJ,EAAoB2B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,C,eCNAzB,EAAoB2B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIhR,KAAOgR,EACX7B,EAAoB8B,EAAED,EAAYhR,KAASmP,EAAoB8B,EAAE3B,EAAStP,IAC5E0M,OAAOwE,eAAe5B,EAAStP,EAAK,CAAEmR,YAAY,EAAMzV,IAAKsV,EAAWhR,IAG3E,C,eCPAmP,EAAoBiC,EAAI,CAAC,EAGzBjC,EAAoBkC,EAAI,SAASC,GAChC,OAAO5P,QAAQC,IAAI+K,OAAO6D,KAAKpB,EAAoBiC,GAAGG,OAAO,SAASC,EAAUxR,GAE/E,OADAmP,EAAoBiC,EAAEpR,GAAKsR,EAASE,GAC7BA,CACR,EAAG,IACJ,C,eCPArC,EAAoBsC,EAAI,SAASH,GAEhC,MAAO,MAAQA,EAAU,IAAM,CAAC,GAAK,WAAW,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,KACxQ,C,eCHAnC,EAAoBuC,SAAW,SAASJ,GAEvC,MAAO,OAASA,EAAU,IAAM,CAAC,GAAK,WAAW,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,YAAYA,GAAW,MACzQ,C,eCJAnC,EAAoBwC,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOxH,MAAQ,IAAIyH,SAAS,cAAb,EAChB,CAAE,MAAOR,GACR,GAAsB,kBAAXrE,OAAqB,OAAOA,MACxC,CACA,CAPuB,E,eCAxBmC,EAAoB8B,EAAI,SAASa,EAAKC,GAAQ,OAAOrF,OAAOsF,UAAUC,eAAexC,KAAKqC,EAAKC,EAAO,C,eCAtG,IAAIG,EAAa,CAAC,EACdC,EAAoB,iBAExBhD,EAAoBiD,EAAI,SAAS3Q,EAAK4Q,EAAMrS,EAAKsR,GAChD,GAAGY,EAAWzQ,GAAQyQ,EAAWzQ,GAAK6Q,KAAKD,OAA3C,CACA,IAAIE,EAAQC,EACZ,QAAWxU,IAARgC,EAEF,IADA,IAAIyS,EAAUvP,SAASwP,qBAAqB,UACpCvC,EAAI,EAAGA,EAAIsC,EAAQrC,OAAQD,IAAK,CACvC,IAAIwC,EAAIF,EAAQtC,GAChB,GAAGwC,EAAEC,aAAa,QAAUnR,GAAOkR,EAAEC,aAAa,iBAAmBT,EAAoBnS,EAAK,CAAEuS,EAASI,EAAG,KAAO,CACpH,CAEGJ,IACHC,GAAa,EACbD,EAASrP,SAASiL,cAAc,UAEhCoE,EAAOM,QAAU,QACb1D,EAAoB2D,IACvBP,EAAOQ,aAAa,QAAS5D,EAAoB2D,IAElDP,EAAOQ,aAAa,eAAgBZ,EAAoBnS,GAExDuS,EAAOrQ,IAAMT,GAEdyQ,EAAWzQ,GAAO,CAAC4Q,GACnB,IAAIW,EAAmB,SAASC,EAAMC,GAErCX,EAAOtQ,QAAUsQ,EAAOvQ,OAAS,KACjCmR,aAAaC,GACb,IAAIC,EAAUnB,EAAWzQ,GAIzB,UAHOyQ,EAAWzQ,GAClB8Q,EAAOe,YAAcf,EAAOe,WAAWC,YAAYhB,GACnDc,GAAWA,EAAQrF,QAAQ,SAAS+B,GAAM,OAAOA,EAAGmD,EAAQ,GACzDD,EAAM,OAAOA,EAAKC,EACtB,EACIE,EAAUI,WAAWR,EAAiBS,KAAK,UAAMzV,EAAW,CAAE6Q,KAAM,UAAW6E,OAAQnB,IAAW,MACtGA,EAAOtQ,QAAU+Q,EAAiBS,KAAK,KAAMlB,EAAOtQ,SACpDsQ,EAAOvQ,OAASgR,EAAiBS,KAAK,KAAMlB,EAAOvQ,QACnDwQ,GAActP,SAASqJ,KAAKkC,YAAY8D,EAnCkB,CAoC3D,C,eCvCApD,EAAoBuB,EAAI,SAASpB,GACX,qBAAXqE,QAA0BA,OAAOC,aAC1ClH,OAAOwE,eAAe5B,EAASqE,OAAOC,YAAa,CAAE3T,MAAO,WAE7DyM,OAAOwE,eAAe5B,EAAS,aAAc,CAAErP,OAAO,GACvD,C,eCNAkP,EAAoB0E,EAAI,G,eCAxB,GAAwB,qBAAb3Q,SAAX,CACA,IAAI4Q,EAAmB,SAASxC,EAASyC,EAAUC,EAAQpS,EAASC,GACnE,IAAIoS,EAAU/Q,SAASiL,cAAc,QAErC8F,EAAQ3F,IAAM,aACd2F,EAAQpF,KAAO,WACXM,EAAoB2D,KACvBmB,EAAQC,MAAQ/E,EAAoB2D,IAErC,IAAIqB,EAAiB,SAASjB,GAG7B,GADAe,EAAQhS,QAAUgS,EAAQjS,OAAS,KAChB,SAAfkR,EAAMrE,KACTjN,QACM,CACN,IAAIwS,EAAYlB,GAASA,EAAMrE,KAC3BwF,EAAWnB,GAASA,EAAMQ,QAAUR,EAAMQ,OAAOnF,MAAQwF,EACzDO,EAAM,IAAIC,MAAM,qBAAuBjD,EAAU,cAAgB8C,EAAY,KAAOC,EAAW,KACnGC,EAAIhY,KAAO,iBACXgY,EAAIE,KAAO,wBACXF,EAAIzF,KAAOuF,EACXE,EAAIG,QAAUJ,EACVJ,EAAQX,YAAYW,EAAQX,WAAWC,YAAYU,GACvDpS,EAAOyS,EACR,CACD,EAUA,OATAL,EAAQhS,QAAUgS,EAAQjS,OAASmS,EACnCF,EAAQ1F,KAAOwF,EAGXC,EACHA,EAAOV,WAAWoB,aAAaT,EAASD,EAAOW,aAE/CzR,SAASqJ,KAAKkC,YAAYwF,GAEpBA,CACR,EACIW,EAAiB,SAASrG,EAAMwF,GAEnC,IADA,IAAIc,EAAmB3R,SAASwP,qBAAqB,QAC7CvC,EAAI,EAAGA,EAAI0E,EAAiBzE,OAAQD,IAAK,CAChD,IAAI2E,EAAMD,EAAiB1E,GACvB4E,EAAWD,EAAIlC,aAAa,cAAgBkC,EAAIlC,aAAa,QACjE,GAAe,eAAZkC,EAAIxG,MAAyByG,IAAaxG,GAAQwG,IAAahB,GAAW,OAAOe,CACrF,CACA,IAAIE,EAAoB9R,SAASwP,qBAAqB,SACtD,IAAQvC,EAAI,EAAGA,EAAI6E,EAAkB5E,OAAQD,IAAK,CAC7C2E,EAAME,EAAkB7E,GACxB4E,EAAWD,EAAIlC,aAAa,aAChC,GAAGmC,IAAaxG,GAAQwG,IAAahB,EAAU,OAAOe,CACvD,CACD,EACIG,EAAiB,SAAS3D,GAC7B,OAAO,IAAI5P,QAAQ,SAASE,EAASC,GACpC,IAAI0M,EAAOY,EAAoBuC,SAASJ,GACpCyC,EAAW5E,EAAoB0E,EAAItF,EACvC,GAAGqG,EAAerG,EAAMwF,GAAW,OAAOnS,IAC1CkS,EAAiBxC,EAASyC,EAAU,KAAMnS,EAASC,EACpD,EACD,EAEIqT,EAAqB,CACxB,IAAK,GAGN/F,EAAoBiC,EAAE+D,QAAU,SAAS7D,EAASE,GACjD,IAAI4D,EAAY,CAAC,GAAK,EAAE,GAAK,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,EAAE,IAAM,GAClHF,EAAmB5D,GAAUE,EAASc,KAAK4C,EAAmB5D,IACzB,IAAhC4D,EAAmB5D,IAAkB8D,EAAU9D,IACtDE,EAASc,KAAK4C,EAAmB5D,GAAW2D,EAAe3D,GAAS3V,KAAK,WACxEuZ,EAAmB5D,GAAW,CAC/B,EAAG,SAASD,GAEX,aADO6D,EAAmB5D,GACpBD,CACP,GAEF,CA3E2C,C,eCK3C,IAAIgE,EAAkB,CACrB,IAAK,GAGNlG,EAAoBiC,EAAEd,EAAI,SAASgB,EAASE,GAE1C,IAAI8D,EAAqBnG,EAAoB8B,EAAEoE,EAAiB/D,GAAW+D,EAAgB/D,QAAWtT,EACtG,GAA0B,IAAvBsX,EAGF,GAAGA,EACF9D,EAASc,KAAKgD,EAAmB,SAEjC,GAAI,iBAAiBC,KAAKjE,GAyBnB+D,EAAgB/D,GAAW,MAzBE,CAEnC,IAAIkE,EAAU,IAAI9T,QAAQ,SAASE,EAASC,GAAUyT,EAAqBD,EAAgB/D,GAAW,CAAC1P,EAASC,EAAS,GACzH2P,EAASc,KAAKgD,EAAmB,GAAKE,GAGtC,IAAI/T,EAAM0N,EAAoB0E,EAAI1E,EAAoBsC,EAAEH,GAEpD9U,EAAQ,IAAI+X,MACZkB,EAAe,SAASvC,GAC3B,GAAG/D,EAAoB8B,EAAEoE,EAAiB/D,KACzCgE,EAAqBD,EAAgB/D,GACX,IAAvBgE,IAA0BD,EAAgB/D,QAAWtT,GACrDsX,GAAoB,CACtB,IAAIlB,EAAYlB,IAAyB,SAAfA,EAAMrE,KAAkB,UAAYqE,EAAMrE,MAChE6G,EAAUxC,GAASA,EAAMQ,QAAUR,EAAMQ,OAAOxR,IACpD1F,EAAMmZ,QAAU,iBAAmBrE,EAAU,cAAgB8C,EAAY,KAAOsB,EAAU,IAC1FlZ,EAAMF,KAAO,iBACbE,EAAMqS,KAAOuF,EACb5X,EAAMiY,QAAUiB,EAChBJ,EAAmB,GAAG9Y,EACvB,CAEF,EACA2S,EAAoBiD,EAAE3Q,EAAKgU,EAAc,SAAWnE,EAASA,EAC9D,CAGJ,EAUAnC,EAAoBS,EAAEU,EAAI,SAASgB,GAAW,OAAoC,IAA7B+D,EAAgB/D,EAAgB,EAGrF,IAAIsE,EAAuB,SAASC,EAA4Bha,GAC/D,IAKIuT,EAAUkC,EALVxB,EAAWjU,EAAK,GAChBia,EAAcja,EAAK,GACnBka,EAAUla,EAAK,GAGIsU,EAAI,EAC3B,GAAGL,EAASkG,KAAK,SAASC,GAAM,OAA+B,IAAxBZ,EAAgBY,EAAW,GAAI,CACrE,IAAI7G,KAAY0G,EACZ3G,EAAoB8B,EAAE6E,EAAa1G,KACrCD,EAAoBO,EAAEN,GAAY0G,EAAY1G,IAGhD,GAAG2G,EAAS,IAAIlG,EAASkG,EAAQ5G,EAClC,CAEA,IADG0G,GAA4BA,EAA2Bha,GACrDsU,EAAIL,EAASM,OAAQD,IACzBmB,EAAUxB,EAASK,GAChBhB,EAAoB8B,EAAEoE,EAAiB/D,IAAY+D,EAAgB/D,IACrE+D,EAAgB/D,GAAS,KAE1B+D,EAAgB/D,GAAW,EAE5B,OAAOnC,EAAoBS,EAAEC,EAC9B,EAEIqG,EAAqBC,KAAK,6BAA+BA,KAAK,8BAAgC,GAClGD,EAAmBlI,QAAQ4H,EAAqBnC,KAAK,KAAM,IAC3DyC,EAAmB5D,KAAOsD,EAAqBnC,KAAK,KAAMyC,EAAmB5D,KAAKmB,KAAKyC,G,ICpFvF,IAAIE,EAAsBjH,EAAoBS,OAAE5R,EAAW,CAAC,KAAM,WAAa,OAAOmR,EAAoB,MAAQ,GAClHiH,EAAsBjH,EAAoBS,EAAEwG,E","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/locales/index.js","webpack://sanyue_imghub/./src/utils/fontawesomeIcons.js","webpack://sanyue_imghub/./src/App.vue?83ca","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n withCredentials: true, // 始终携带 Cookie(HttpOnly session cookie)\r\n});\r\n\r\nexport default instance;\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\nimport i18n from '@/locales'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n 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 + \".\" + {\"22\":\"b436b08e\",\"63\":\"503c70e6\",\"339\":\"7edc2fbc\",\"380\":\"62235203\",\"549\":\"ffe205fb\",\"711\":\"936a7109\",\"743\":\"f28adaf7\",\"773\":\"f0780366\",\"787\":\"d0dbc2dd\",\"803\":\"4f2ba956\",\"903\":\"1e4b549d\",\"927\":\"1adefc82\",\"997\":\"55a5bae5\"}[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 + \".\" + {\"30\":\"c12a4e5b\",\"63\":\"398231b7\",\"173\":\"f8fd1fa2\",\"322\":\"2b40f004\",\"339\":\"de55c4be\",\"549\":\"0f00dee2\",\"711\":\"e6dbd5da\",\"743\":\"4cb567b6\",\"773\":\"b55efe26\",\"787\":\"f6f7607a\",\"803\":\"398231b7\",\"927\":\"b1a356fd\",\"997\":\"c0e2a060\"}[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 = {\"30\":1,\"63\":1,\"173\":1,\"322\":1,\"339\":1,\"549\":1,\"711\":1,\"743\":1,\"773\":1,\"787\":1,\"803\":1,\"927\":1,\"997\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(173|30|322)$/.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 +{"version":3,"file":"js/app.13a65c7a.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/locales/index.js","webpack://sanyue_imghub/./src/utils/fontawesomeIcons.js","webpack://sanyue_imghub/./src/App.vue?83ca","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n withCredentials: true, // 始终携带 Cookie(HttpOnly session cookie)\r\n});\r\n\r\nexport default instance;\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\nimport i18n from '@/locales'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要管理端认证,直接放行\r\n if (!data.adminRequired) {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效的 admin session\r\n if (data.valid && data.authType === 'admin') {\r\n store.commit('setAdminLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.adminLoggedIn\r\n store.commit('setAdminLoggedIn', false)\r\n if (to.name !== 'adminLogin') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'adminLogin' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n axios.get('/api/auth/sessionCheck', {\r\n withCredentials: true\r\n }).then(res => {\r\n const data = res.data || {}\r\n\r\n // 不需要用户端认证,直接放行\r\n if (!data.userRequired) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证,检查是否有有效 session(user 或 admin 都可以)\r\n if (data.valid) {\r\n store.commit('setUserLoggedIn', true)\r\n return next()\r\n }\r\n\r\n // 需要认证但没有有效 session,跳转登录\r\n // 只有之前已登录(session 过期)才提示错误,首次未登录静默跳转\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n }).catch(() => {\r\n const wasLoggedIn = store.state.userLoggedIn\r\n store.commit('setUserLoggedIn', false)\r\n if (to.name !== 'login') {\r\n if (wasLoggedIn) {\r\n ElMessage.error(i18n.global.t('login.authRequired'))\r\n }\r\n next({ name: 'login' })\r\n } else {\r\n next()\r\n }\r\n })\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n // 会话状态标记(不存储密码,实际认证通过 HttpOnly Cookie)\r\n adminLoggedIn: false,\r\n userLoggedIn: false,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n 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 + \".\" + {\"22\":\"b436b08e\",\"63\":\"503c70e6\",\"339\":\"7edc2fbc\",\"380\":\"62235203\",\"549\":\"ffe205fb\",\"711\":\"936a7109\",\"743\":\"f28adaf7\",\"773\":\"f0780366\",\"787\":\"d0dbc2dd\",\"803\":\"4f2ba956\",\"807\":\"0a4d199f\",\"903\":\"1e4b549d\",\"997\":\"55a5bae5\"}[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 + \".\" + {\"30\":\"c12a4e5b\",\"63\":\"398231b7\",\"173\":\"f8fd1fa2\",\"322\":\"2b40f004\",\"339\":\"de55c4be\",\"549\":\"0f00dee2\",\"711\":\"e6dbd5da\",\"743\":\"4cb567b6\",\"773\":\"b55efe26\",\"787\":\"f6f7607a\",\"803\":\"398231b7\",\"807\":\"413b2fce\",\"997\":\"c0e2a060\"}[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 = {\"30\":1,\"63\":1,\"173\":1,\"322\":1,\"339\":1,\"549\":1,\"711\":1,\"743\":1,\"773\":1,\"787\":1,\"803\":1,\"807\":1,\"997\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(173|30|322)$/.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.13a65c7a.js.map.gz b/frontend-dist/js/app.13a65c7a.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..abfe6f50425f0771203767c2e7586982c45793c2 GIT binary patch literal 18374 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.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(903),t.e(173),t.e(30),t.e(927)]).then(t.bind(t,1927)),beforeEnter:d},{path:"/login",name:"login",component:()=>Promise.all([t.e(903),t.e(380),t.e(63)]).then(t.bind(t,61880))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(30),t.e(549)]).then(t.bind(t,11017)),beforeEnter:s},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(322),t.e(997)]).then(t.bind(t,60997)),beforeEnter:s},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([t.e(903),t.e(173),t.e(22),t.e(322),t.e(339)]).then(t.bind(t,27339)),beforeEnter:s},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([t.e(903),t.e(380),t.e(803)]).then(t.bind(t,16556))},{path:"/blockimg",name:"blockimg",component:()=>Promise.all([t.e(903),t.e(711)]).then(t.bind(t,5215))},{path:"/whiteliston",name:"whiteliston",component:()=>Promise.all([t.e(903),t.e(773)]).then(t.bind(t,86569))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>t.e(743).then(t.bind(t,92743))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>Promise.all([t.e(903),t.e(787)]).then(t.bind(t,75875))}],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":"文件上传","selectFolderUpload":"选择文件夹上传","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.开启后,仅被加入白名单的文件可被访问","imageTransform":"图片尺寸处理","enableImageTransform":"是否开启","enableImageTransformTooltip":"开启后,读取文件接口可通过 width、height 和 fit 参数处理图片尺寸","imageTransformAllowedSizes":"允许尺寸","imageTransformAllowedSizesPlaceholder":"例如 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"留空允许任意合法尺寸
多个尺寸用英文逗号分隔,单边未限制时填写 auto","imageTransformAllowedSizesInvalid":"尺寸格式无效,请使用 320xauto、autox480 或 1280x720,单边最大 4096","settingsSaved":"设置已保存","tokenName":"名称","tokenValue":"Token","permissions":"权限","createdAt":"创建时间","status":"状态","expiresAt":"过期时间","operation":"操作","editBtn":"编辑","deleteBtn":"删除","permUpload":"上传","permDelete":"删除","permList":"列出","permManage":"管理","createTokenTitle":"创建新 API Token","tokenNameLabel":"Token 名称","tokenNamePlaceholder":"请输入Token名称","permissionsLabel":"权限","neverExpire":"永不过期","validPeriod":"有效期","autoDeleteOnExpire":"过期自动删除","createBtn":"创建","editTokenTitle":"编辑 API Token","updateBtn":"更新","tokenCreatedTitle":"Token 创建成功","tokenCreatedWarning":"请妥善保存以下Token,关闭此窗口后将无法再次查看完整Token!","fullToken":"完整Token","copyBtn":"复制","savedBtn":"我已保存","tokenCopied":"Token已复制到剪贴板","copyFailed":"复制失败,请手动复制","tokenCreateSuccess":"Token创建成功","tokenCreateFailed":"Token创建失败","tokenUpdateSuccess":"Token更新成功","tokenUpdateFailed":"Token更新失败","tokenDeleteConfirm":"此操作将永久删除该Token,是否继续?","tokenDeleteConfirmTitle":"提示","tokenDeleteConfirmOk":"确定","tokenDeleteConfirmCancel":"取消","tokenDeleteSuccess":"Token删除成功","tokenDeleteFailed":"Token删除失败","tokenListFailed":"获取Token列表失败","passwordUrlReserved":"密码不能包含部分URL保留字符: % & ? # /","confirmUploadPassword":"请再次输入上传密码","confirmAdminPassword":"请再次输入管理密码","passwordMismatch":"两次输入密码不一致","passwordUnchanged":"未修改(留空保持原密码)","adminPasswordChangedRelogin":"管理端密码已修改,即将跳转到登录页","clearPassword":"清除认证信息","tokenNameRequired":"请输入Token名称","permissionsRequired":"请选择权限","validPeriodRequired":"有效期数值必须大于 0","timeUnitSeconds":"秒","timeUnitMinutes":"分钟","timeUnitHours":"小时","timeUnitDays":"天","timeUnitMonths":"月","timeUnitYears":"年","sessionSecurityPolicy":"会话安全策略","secureMode":"Secure 模式","secureModeTooltip":"开启后,Cookie 仅通过 HTTPS 连接传输,请确保您的站点已启用 HTTPS","userSessionMaxAge":"用户端会话有效期","adminSessionMaxAge":"管理端会话有效期","sessionMaxAgeUnit":"天","sessionMaxAgeInvalid":"会话有效期必须为 1-3650 的正整数"},"sysPage":{"settingsSaved":"设置已保存","refreshAnnouncement":"刷新公告已读状态","otherSettings":"其他设置","channelSelectPlaceholder":"请先选择上传渠道"},"sysOthers":{"remoteTelemetry":"远端遥测","remoteTelemetryTooltip":"便于问题查找和定位,建议开启","enable":"启用","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"设置后可以使后端拉黑、删除等操作不受CDN缓存限制
建议设置,设置方式请查阅文档","zoneId":"区域ID","accountEmail":"账户邮箱","randomImageApi":"随机图像API","randomImageApiTooltip":"API具体用法请查阅文档","directory":"目录","directoryTooltip":"1. 开放随机图权限的目录,默认为根目录,多个目录用逗号分隔
2. 目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问","publicBrowse":"访客图库","publicBrowseTooltip":"启用后,访客可通过 /browse 路径浏览指定目录的图片(只读,无法删除/移动)","openDirectory":"开放目录","openDirectoryTooltip":"

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

示例:wallpaper,photos,album

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

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

","webdav":"WebDAV","webdavTooltip":"启用后,可以通过WebDAV协议访问和管理图片","webdavUsername":"用户名","webdavPassword":"密码","webdavUploadChannel":"上传渠道","webdavDefaultChannel":"默认渠道","webdavChannelName":"指定渠道名","settingsSaved":"设置已保存"},"customerConfig":{"uploadFileList":"上传文件列表","fileNameCol":"文件名","filePreview":"文件预览","uploadTimeCol":"上传时间","ipAddress":"IP地址","address":"地址","uploadCount":"上传次数","allowUpload":"允许上传","allow":"允许","deny":"禁止","loadMore":"加载更多","loadError":"加载更多数据时出错,请检查网络连接","syncError":"同步数据时出错,请检查网络连接"},"publicBrowse":{"searchPlaceholder":"搜索文件名 或 #页码","fileCount":"{count} 个文件","loading":"加载中...","retry":"重试","creditText":"该图库由林酱贡献代码","loadingMore":"加载中...","allLoaded":"已加载全部","creditLink":"林酱贡献","browseDisabled":"公开浏览功能未启用","directoryNotAllowed":"该目录不允许公开访问","accessDenied":"访问被拒绝","loadFailed":"加载失败,请重试","rootDirectory":"根目录","copyLink":"复制链接","copied":"已复制","downloadBtn":"下载","swipeHint":"← 滑动切换 →","rotate90":"旋转90°"},"transformMedia":{"download":"下载","playbackSpeed":"播放速度","normalSpeed":"正常","playMode":"播放模式","stopAfterPlay":"播完停止","sequentialPlay":"顺序播放","loopSingle":"单曲循环","more":"更多"},"directoryTree":{"selectDirectory":"选择目录","retry":"重试","authFailed":"认证失败,请重新登录","serverError":"服务器错误,请稍后重试","loadFailed":"加载目录树失败,请检查网络连接"},"floatingSave":{"saving":"保存中","save":"保存"},"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","selectFolderUpload":"Choose a folder to 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","imageTransform":"Image Resizing","enableImageTransform":"Enable","enableImageTransformTooltip":"Allows the file endpoint to process images using width, height, and fit parameters","imageTransformAllowedSizes":"Allowed Sizes","imageTransformAllowedSizesPlaceholder":"For example: 320xauto,640xauto,1280x720","imageTransformAllowedSizesHint":"Leave empty to allow any valid size
Separate entries with commas and use auto for an unrestricted dimension","imageTransformAllowedSizesInvalid":"Invalid size format. Use 320xauto, autox480, or 1280x720; each dimension is limited to 4096","settingsSaved":"Settings saved","tokenName":"Name","tokenValue":"Token","permissions":"Permissions","createdAt":"Created At","status":"Status","expiresAt":"Expires At","operation":"Actions","editBtn":"Edit","deleteBtn":"Delete","permUpload":"Upload","permDelete":"Delete","permList":"List","permManage":"Manage","createTokenTitle":"Create New API Token","tokenNameLabel":"Token Name","tokenNamePlaceholder":"Enter token name","permissionsLabel":"Permissions","neverExpire":"Never Expire","validPeriod":"Valid Period","autoDeleteOnExpire":"Auto-delete on expiry","createBtn":"Create","editTokenTitle":"Edit API Token","updateBtn":"Update","tokenCreatedTitle":"Token Created Successfully","tokenCreatedWarning":"Please save the following token. You won\'t be able to view the full token after closing this dialog!","fullToken":"Full Token","copyBtn":"Copy","savedBtn":"I\'ve Saved It","tokenCopied":"Token copied to clipboard","copyFailed":"Copy failed, please copy manually","tokenCreateSuccess":"Token created successfully","tokenCreateFailed":"Failed to create token","tokenUpdateSuccess":"Token updated successfully","tokenUpdateFailed":"Failed to update token","tokenDeleteConfirm":"This will permanently delete this token. Continue?","tokenDeleteConfirmTitle":"Notice","tokenDeleteConfirmOk":"OK","tokenDeleteConfirmCancel":"Cancel","tokenDeleteSuccess":"Token deleted successfully","tokenDeleteFailed":"Failed to delete token","tokenListFailed":"Failed to fetch token list","passwordUrlReserved":"Password cannot contain URL reserved characters: % & ? # /","confirmUploadPassword":"Please re-enter upload password","confirmAdminPassword":"Please re-enter admin password","passwordMismatch":"Passwords do not match","passwordUnchanged":"Unchanged (leave empty to keep current password)","adminPasswordChangedRelogin":"Admin password changed, redirecting to login page","clearPassword":"Clear authentication info","tokenNameRequired":"Please enter token name","permissionsRequired":"Please select permissions","validPeriodRequired":"Valid period must be greater than 0","timeUnitSeconds":"seconds","timeUnitMinutes":"minutes","timeUnitHours":"hours","timeUnitDays":"days","timeUnitMonths":"months","timeUnitYears":"years","sessionSecurityPolicy":"Session Security Policy","secureMode":"Secure Mode","secureModeTooltip":"When enabled, cookies are only transmitted over HTTPS. Make sure your site has HTTPS enabled","userSessionMaxAge":"User Session Max Age","adminSessionMaxAge":"Admin Session Max Age","sessionMaxAgeUnit":"days","sessionMaxAgeInvalid":"Session max age must be an integer from 1 to 3650"},"sysPage":{"settingsSaved":"Settings saved","refreshAnnouncement":"Reset announcement read status","otherSettings":"Other Settings","channelSelectPlaceholder":"Please select upload channel first"},"sysOthers":{"remoteTelemetry":"Remote Telemetry","remoteTelemetryTooltip":"Helps with issue tracking and debugging, recommended to enable","enable":"Enable","cloudflareApiToken":"CloudFlare API Token","cloudflareApiTokenTooltip":"When set, backend operations like blocking and deleting won\'t be affected by CDN cache
Recommended, see documentation for setup","zoneId":"Zone ID","accountEmail":"Account Email","randomImageApi":"Random Image API","randomImageApiTooltip":"See documentation for API usage details","directory":"Directory","directoryTooltip":"1. Directories with random image access, defaults to root. Separate multiple directories with commas
2. All directories use absolute paths, e.g. /img/cover, meaning files in this directory and all subdirectories can be accessed by the random image API","publicBrowse":"Public Gallery","publicBrowseTooltip":"When enabled, visitors can browse images in specified directories via /browse path (read-only, no delete/move)","openDirectory":"Open Directory","openDirectoryTooltip":"

Directories open for public browsing, separate multiple with commas

Example: wallpaper,photos,album

Supports subdirectories: 2026/lucky,2026/rich

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

","webdav":"WebDAV","webdavTooltip":"When enabled, images can be accessed and managed via WebDAV protocol","webdavUsername":"Username","webdavPassword":"Password","webdavUploadChannel":"Upload Channel","webdavDefaultChannel":"Default Channel","webdavChannelName":"Specified Channel","settingsSaved":"Settings saved"},"customerConfig":{"uploadFileList":"Upload File List","fileNameCol":"File Name","filePreview":"File Preview","uploadTimeCol":"Upload Time","ipAddress":"IP Address","address":"Address","uploadCount":"Upload Count","allowUpload":"Allow Upload","allow":"Allow","deny":"Deny","loadMore":"Load More","loadError":"Error loading more data, please check network connection","syncError":"Error syncing data, please check network connection"},"publicBrowse":{"searchPlaceholder":"Search file name or #page","fileCount":"{count} files","loading":"Loading...","retry":"Retry","creditText":"Gallery code contributed by LinJiang","loadingMore":"Loading...","allLoaded":"All loaded","creditLink":"LinJiang","browseDisabled":"Public browsing is not enabled","directoryNotAllowed":"This directory is not open for public access","accessDenied":"Access denied","loadFailed":"Load failed, please retry","rootDirectory":"Root","copyLink":"Copy Link","copied":"Copied","downloadBtn":"Download","swipeHint":"← Swipe to navigate →","rotate90":"Rotate 90°"},"transformMedia":{"download":"Download","playbackSpeed":"Playback Speed","normalSpeed":"Normal","playMode":"Play Mode","stopAfterPlay":"Stop After Play","sequentialPlay":"Sequential Play","loopSingle":"Loop Single","more":"More"},"directoryTree":{"selectDirectory":"Select Directory","retry":"Retry","authFailed":"Authentication failed, please log in again","serverError":"Server error, please try again later","loadFailed":"Failed to load directory tree, please check network connection"},"floatingSave":{"saving":"Saving","save":"Save"},"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),x=t(12375),R=t(97619),B=t(84310),E=t(14552),O=t(79919),W=t(10767),q=t(20491),z=t(18422),V=t(17214),H=t(44845),j=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),xe=t(87849),Re=t(78034),Be=t(59413),Ee=t(58869),Oe=t(79102),We=t(78337),qe=t(38870),ze=t(70577),Ve=t(93212),He=t(40275),je=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,x.Xb,R.dB,B.Ub,E.q9,O.rM,W.jP,q.he,c._2,z.cb,V.MT,H.vH,j.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,xe.H9,Re.Yp,Be.z1,Ee.Nf,Oe.oM,We.VN,qe.Ot,ze.xi,Ve._2,He.DX,je.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+"."+{22:"b436b08e",63:"503c70e6",339:"7edc2fbc",380:"62235203",549:"ffe205fb",711:"936a7109",743:"f28adaf7",773:"f0780366",787:"d0dbc2dd",803:"4f2ba956",903:"1e4b549d",927:"1adefc82",997:"55a5bae5"}[e]+".js"}}(),function(){t.miniCssF=function(e){return"css/"+e+"."+{30:"c12a4e5b",63:"398231b7",173:"f8fd1fa2",322:"2b40f004",339:"de55c4be",549:"0f00dee2",711:"e6dbd5da",743:"4cb567b6",773:"b55efe26",787:"f6f7607a",803:"398231b7",927:"b1a356fd",997:"c0e2a060"}[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;cA;2c#q9Cx7U{22L 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 L-35@Pe=`99{;*wD diff --git a/frontend-dist/js/app.79c9e5f6.js.map.gz b/frontend-dist/js/app.79c9e5f6.js.map.gz deleted file mode 100644 index 0ae249248a4078dfe2115f036d79b04b68aa8c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18375 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¨TOa`F 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