diff --git a/.gitignore b/.gitignore index 1834bc9..6367b2c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,8 @@ .wrangler/* data/* node_modules -.DS_Store \ No newline at end of file +wrangler.toml +.DS_Store + +.kiro/ +.vscode/ \ No newline at end of file diff --git a/css/100.3adc87e0.css b/css/100.3adc87e0.css deleted file mode 100644 index 0c90462..0000000 --- a/css/100.3adc87e0.css +++ /dev/null @@ -1 +0,0 @@ -.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)}.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))}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.login[data-v-ddf8586a]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box}.login-title[data-v-ddf8586a]{font-size:2.5rem;margin-bottom:15px;color:var(--login-title-color);font-family:Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease}@media (max-width:768px){.login-title[data-v-ddf8586a]{font-size:1.5rem}.login[data-v-ddf8586a]{transition:background-color .4s ease-out}.login.is-focused[data-v-ddf8586a]{justify-content:flex-start;padding-top:10vh}.login-container[data-v-ddf8586a]{transition:transform .4s ease-out,box-shadow .4s ease-out}.login.is-focused .login-container[data-v-ddf8586a]{transform:translateY(-20px);box-shadow:var(--login-container-hover-box-shadow),0 20px 40px rgba(0,0,0,.15)}}.login-title[data-v-ddf8586a]:focus,.login-title[data-v-ddf8586a]:hover{transform:translateY(-2px);text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-ddf8586a]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:40vw;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);backdrop-filter:blur(8px);transition:all .3s ease;padding:40px 0;gap:20px}@media (max-width:768px){.login-container[data-v-ddf8586a]{width:80vw}}.login-container[data-v-ddf8586a]:hover{box-shadow:var(--login-container-hover-box-shadow);transform:translateY(-5px)}.input-container[data-v-ddf8586a]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-ddf8586a]{width:85%;gap:6px}}.input-wrapper[data-v-ddf8586a]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-ddf8586a]{margin-right:6px;font-size:1rem}.input-name[data-v-ddf8586a]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-ddf8586a]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:linear-gradient(90deg,var(--login-input-underline-color,#5b9bd3),var(--login-input-underline-secondary-color,#7ba9d8));transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-ddf8586a]:after,.input-container:hover .input-name[data-v-ddf8586a]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-ddf8586a],.input-container:hover .input-name[data-v-ddf8586a]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-ddf8586a]{font-size:.85rem}}.submit[data-v-ddf8586a]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-ddf8586a]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-ddf8586a]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-ddf8586a 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-ddf8586a{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-ddf8586a]{width:50%}}.submit[data-v-ddf8586a]:not(.is-loading):focus,.submit[data-v-ddf8586a]:not(.is-loading):hover{transform:translateY(-3px) scale(1.05);box-shadow:0 4px 12px rgba(0,0,0,.2)}.submit[data-v-ddf8586a]:disabled{cursor:default;transform:none}.password-input[data-v-ddf8586a]{width:100%;height:50px;position:relative}.password-input[data-v-ddf8586a] .el-input__prefix{color:var(--login-input-icon-color,#909399);font-size:1rem;transition:color .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-ddf8586a] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:2px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(10px);position:relative;overflow:hidden}.password-input[data-v-ddf8586a] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-ddf8586a] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-ddf8586a] .el-input__wrapper:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15);border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:0 0 0 3px rgba(91,155,211,.1);transform:translateY(-1px)}.password-input[data-v-ddf8586a] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-ddf8586a] .el-input__inner,[data-theme=dark] .password-input[data-v-ddf8586a] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-ddf8586a] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-ddf8586a] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-ddf8586a] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-ddf8586a] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-ddf8586a]{width:100%;height:45px}.password-input[data-v-ddf8586a] .el-input__wrapper{padding:10px 14px}}.footer[data-v-ddf8586a]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-ddf8586a]{position:fixed;top:30px;right:30px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px}.toggle-dark[data-v-ddf8586a]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)} \ No newline at end of file diff --git a/css/100.3adc87e0.css.gz b/css/100.3adc87e0.css.gz deleted file mode 100644 index 645f44d..0000000 Binary files a/css/100.3adc87e0.css.gz and /dev/null differ diff --git a/css/119.2a856832.css b/css/119.2a856832.css deleted file mode 100644 index 22366fe..0000000 --- a/css/119.2a856832.css +++ /dev/null @@ -1 +0,0 @@ -:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}#themeToggle[data-v-4c6ec90c]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-4c6ec90c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-4c6ec90c]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-4c6ec90c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-4c6ec90c]{transform:rotate(40deg)}.theme_toggle_g[data-v-4c6ec90c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-4c6ec90c],.icon-fade-leave-active[data-v-4c6ec90c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-4c6ec90c],.icon-fade-leave-from[data-v-4c6ec90c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-4c6ec90c]{display:inline-block}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:23px;line-height:12px;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out;width:min(23px,100%)}.el-table__expand-icon:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:-2px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-flex;flex-direction:column;height:14px;margin:0;outline:none;overflow:initial;padding:0;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out;vertical-align:middle;width:24px}.el-table .caret-wrapper:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);cursor:pointer;display:inline-block;margin:0;outline:none;padding:0;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__column-filter-trigger:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;text-align:center;width:20px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:50%;position:absolute;top:50%;transform:translate(-45%,-60%) rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.tabs[data-v-4673d77a]{display:flex;align-items:center;justify-content:center;gap:12px}.title[data-v-4673d77a]{display:flex;align-items:center;gap:10px;font-size:1.2em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:6px 14px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4673d77a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4673d77a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4673d77a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4673d77a]{cursor:pointer;font-size:1.5em;transition:all .3s ease;color:var(--admin-container-color);padding:6px 10px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4673d77a],.tabs-dropdown-link[data-v-4673d77a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.title[data-v-4673d77a]{font-size:1.3em;padding:4px 10px;gap:6px}.tabs-dropdown-link[data-v-4673d77a]{font-size:1.3em;padding:4px 8px}}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;outline:none;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;outline:none;padding:0 10px}.el-table-filter__list-item:focus,.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__multiple{outline:none}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{appearance:none;background-color:transparent;border:none;border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);margin:0;outline:none;padding:0 3px;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table-filter__bottom button:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px} \ No newline at end of file diff --git a/css/119.2a856832.css.gz b/css/119.2a856832.css.gz deleted file mode 100644 index d376ea9..0000000 Binary files a/css/119.2a856832.css.gz and /dev/null differ diff --git a/css/214.3adc87e0.css b/css/214.3adc87e0.css deleted file mode 100644 index 0c90462..0000000 --- a/css/214.3adc87e0.css +++ /dev/null @@ -1 +0,0 @@ -.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)}.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))}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.login[data-v-ddf8586a]{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:100vh;height:auto;background:var(--admin-container-bg-color,var(--bg-color));overflow-y:auto;padding:20px 0;box-sizing:border-box}.login-title[data-v-ddf8586a]{font-size:2.5rem;margin-bottom:15px;color:var(--login-title-color);font-family:Noto Sans SC,sans-serif;cursor:pointer;transition:all .3s ease}@media (max-width:768px){.login-title[data-v-ddf8586a]{font-size:1.5rem}.login[data-v-ddf8586a]{transition:background-color .4s ease-out}.login.is-focused[data-v-ddf8586a]{justify-content:flex-start;padding-top:10vh}.login-container[data-v-ddf8586a]{transition:transform .4s ease-out,box-shadow .4s ease-out}.login.is-focused .login-container[data-v-ddf8586a]{transform:translateY(-20px);box-shadow:var(--login-container-hover-box-shadow),0 20px 40px rgba(0,0,0,.15)}}.login-title[data-v-ddf8586a]:focus,.login-title[data-v-ddf8586a]:hover{transform:translateY(-2px);text-shadow:0 0 10px var(--login-title-glow-color,rgba(52,152,219,.5))}.login-container[data-v-ddf8586a]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:auto;height:auto;width:40vw;border-radius:12px;box-shadow:var(--login-container-box-shadow);background-color:var(--login-container-bg-color);backdrop-filter:blur(8px);transition:all .3s ease;padding:40px 0;gap:20px}@media (max-width:768px){.login-container[data-v-ddf8586a]{width:80vw}}.login-container[data-v-ddf8586a]:hover{box-shadow:var(--login-container-hover-box-shadow);transform:translateY(-5px)}.input-container[data-v-ddf8586a]{display:flex;flex-direction:column;align-items:flex-start;width:80%;margin-bottom:15px;position:relative;gap:8px}@media (max-width:768px){.input-container[data-v-ddf8586a]{width:85%;gap:6px}}.input-wrapper[data-v-ddf8586a]{position:relative;width:100%;display:flex;flex-direction:column;transition:all .3s cubic-bezier(.4,0,.2,1)}.input-icon[data-v-ddf8586a]{margin-right:6px;font-size:1rem}.input-name[data-v-ddf8586a]{font-size:.95rem;font-weight:600;color:var(--login-title-color);text-align:left;transition:all .3s ease;letter-spacing:.5px;position:relative;display:flex;align-items:center;justify-content:flex-start;padding-left:2px}.input-name[data-v-ddf8586a]:after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:linear-gradient(90deg,var(--login-input-underline-color,#5b9bd3),var(--login-input-underline-secondary-color,#7ba9d8));transition:width .3s linear;border-radius:1px}.input-container:has(.input-wrapper.focused) .input-name[data-v-ddf8586a]:after,.input-container:hover .input-name[data-v-ddf8586a]:after{width:var(--underline-width,50px)}.input-container:has(.input-wrapper.focused) .input-name[data-v-ddf8586a],.input-container:hover .input-name[data-v-ddf8586a]{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.input-name[data-v-ddf8586a]{font-size:.85rem}}.submit[data-v-ddf8586a]{margin-bottom:10px;width:50%;height:48px;font-size:1.1rem;font-weight:600;letter-spacing:2px;border-radius:12px;background-color:var(--login-submit-btn-bg-color);transition:all .4s cubic-bezier(.4,0,.2,1);border:none;overflow:hidden;position:relative;padding:0;display:flex;justify-content:center;align-items:center}.submit.is-loading[data-v-ddf8586a]{width:48px;border-radius:50%;background-color:transparent!important;box-shadow:none!important;pointer-events:none}.loading-ring[data-v-ddf8586a]{display:inline-block;width:34px;height:34px;border:4px solid transparent;border-radius:50%;border-top-color:var(--login-title-color,#fff);animation:spin-ddf8586a 1s ease-in-out infinite;box-sizing:border-box}@keyframes spin-ddf8586a{to{transform:rotate(1turn)}}@media (max-width:768px){.submit[data-v-ddf8586a]{width:50%}}.submit[data-v-ddf8586a]:not(.is-loading):focus,.submit[data-v-ddf8586a]:not(.is-loading):hover{transform:translateY(-3px) scale(1.05);box-shadow:0 4px 12px rgba(0,0,0,.2)}.submit[data-v-ddf8586a]:disabled{cursor:default;transform:none}.password-input[data-v-ddf8586a]{width:100%;height:50px;position:relative}.password-input[data-v-ddf8586a] .el-input__prefix{color:var(--login-input-icon-color,#909399);font-size:1rem;transition:color .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__prefix{color:var(--login-input-label-focus-color,#5b9bd3)}.password-input[data-v-ddf8586a] .el-input__wrapper{border-radius:12px;background-color:var(--password-input-bg-color);border:2px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:12px 16px;transition:all .3s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(10px);position:relative;overflow:hidden}.password-input[data-v-ddf8586a] .el-input__wrapper:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.password-input[data-v-ddf8586a] .el-input__wrapper:hover:before{left:100%}.password-input[data-v-ddf8586a] .el-input__wrapper:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.15);border-color:var(--login-input-underline-color,#5b9bd3)}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within{border-color:var(--login-input-underline-color,#5b9bd3);box-shadow:0 0 0 3px rgba(91,155,211,.1);transform:translateY(-1px)}.password-input[data-v-ddf8586a] .el-input__inner{color:var(--text-color,var(--login-input-text-color,#333));font-size:1rem;font-weight:500;background:transparent;border:none;box-shadow:none}.dark .password-input[data-v-ddf8586a] .el-input__inner,[data-theme=dark] .password-input[data-v-ddf8586a] .el-input__inner{color:var(--text-color,#fff)!important}.password-input[data-v-ddf8586a] .el-input__inner::-moz-placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.password-input[data-v-ddf8586a] .el-input__inner::placeholder{color:var(--placeholder-color,var(--text-color-secondary,hsla(0,0%,59%,.8)));font-weight:400;transition:opacity .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__inner::-moz-placeholder{opacity:.7}.password-input[data-v-ddf8586a] .el-input__wrapper:focus-within .el-input__inner::placeholder{opacity:.7}.password-input[data-v-ddf8586a] .el-input__suffix{color:var(--icon-color,#666)}.password-input[data-v-ddf8586a] .el-input__suffix-inner{transition:color .3s ease}.password-input[data-v-ddf8586a] .el-input__wrapper:hover .el-input__suffix-inner{color:var(--login-input-label-focus-color,#5b9bd3)}@media (max-width:768px){.password-input[data-v-ddf8586a]{width:100%;height:45px}.password-input[data-v-ddf8586a] .el-input__wrapper{padding:10px 14px}}.footer[data-v-ddf8586a]{position:fixed;bottom:0;width:100vw}.toggle-dark[data-v-ddf8586a]{position:fixed;top:30px;right:30px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px}.toggle-dark[data-v-ddf8586a]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)} \ No newline at end of file diff --git a/css/214.3adc87e0.css.gz b/css/214.3adc87e0.css.gz deleted file mode 100644 index 645f44d..0000000 Binary files a/css/214.3adc87e0.css.gz and /dev/null differ diff --git a/css/226.6548e7b4.css b/css/226.6548e7b4.css deleted file mode 100644 index b0bed73..0000000 --- a/css/226.6548e7b4.css +++ /dev/null @@ -1 +0,0 @@ -.not-found-container[data-v-5437e264]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#667eea 0,#764ba2 100%));color:var(--text-color,#333)}.background-wrapper[data-v-5437e264]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.not-found-content[data-v-5437e264]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-5437e264]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-5437e264]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-5437e264]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.error-animation[data-v-5437e264]{margin-bottom:2rem;position:relative}.error-number[data-v-5437e264]{font-size:6rem;font-weight:900;display:flex;justify-content:center;align-items:center;gap:.5rem;margin-bottom:1rem;text-shadow:0 0 20px rgba(0,0,0,.3);color:var(--primary-color,#409eff)}.error-number span[data-v-5437e264]{display:inline-block;animation:bounce-5437e264 2s infinite;background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.error-number .four[data-v-5437e264]:first-child{animation-delay:-.5s}.error-number .zero[data-v-5437e264]{animation-delay:-.25s;color:#f56c6c;-webkit-text-fill-color:#f56c6c}.error-number .four[data-v-5437e264]:last-child{animation-delay:0s}.error-image[data-v-5437e264]{display:flex;justify-content:center;margin:1.5rem 0}.floating-image[data-v-5437e264]{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;animation:float-5437e264 3s ease-in-out infinite;filter:drop-shadow(0 10px 20px rgba(0,0,0,.2));border-radius:20px;background:hsla(0,0%,100%,.1);padding:10px;backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.error-info[data-v-5437e264]{animation:fadeInUp-5437e264 1s ease-out .5s both}.error-title[data-v-5437e264]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.error-description[data-v-5437e264]{font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:.8;color:var(--text-color-secondary,#666)}.error-actions[data-v-5437e264]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-5437e264]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-5437e264]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-5437e264]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-5437e264]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-5437e264]{margin-right:8px}.help-links[data-v-5437e264]{animation:fadeInUp-5437e264 1s ease-out 1s both}.help-text[data-v-5437e264]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-5437e264]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-5437e264]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-5437e264]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.floating-elements[data-v-5437e264]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-5437e264]{position:absolute;background:rgba(64,158,255,.1);border-radius:50%;animation:floatShapes-5437e264 8s ease-in-out infinite}.shape-1[data-v-5437e264]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-5437e264]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-5437e264]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-5437e264]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-5437e264]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes bounce-5437e264{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes float-5437e264{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(5deg)}}@keyframes floatShapes-5437e264{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-5437e264{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.not-found-content[data-v-5437e264]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-5437e264]{top:-20px;right:-20px}.error-number[data-v-5437e264]{font-size:4rem;gap:.3rem}.error-title[data-v-5437e264]{font-size:1.5rem}.error-description[data-v-5437e264]{font-size:1rem}.error-actions[data-v-5437e264]{flex-direction:column;align-items:center}.action-btn[data-v-5437e264]{width:200px}.quick-links[data-v-5437e264]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-5437e264]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}.floating-image[data-v-5437e264]{width:80px;height:80px;border-radius:15px;padding:8px}}@media (prefers-color-scheme:dark){.not-found-container[data-v-5437e264]{background:var(--bg-color,linear-gradient(135deg,#2c3e50 0,#34495e 100%));color:var(--text-color,#e4e7ed)}.not-found-content[data-v-5437e264]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.error-title[data-v-5437e264]{color:var(--text-color,#e4e7ed)}.error-description[data-v-5437e264],.help-text[data-v-5437e264]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/css/226.6548e7b4.css.gz b/css/226.6548e7b4.css.gz deleted file mode 100644 index 3172159..0000000 Binary files a/css/226.6548e7b4.css.gz and /dev/null differ diff --git a/css/275.bf4b380e.css b/css/275.bf4b380e.css deleted file mode 100644 index 28db504..0000000 --- a/css/275.bf4b380e.css +++ /dev/null @@ -1 +0,0 @@ -.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;word-break:normal;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;display:flex;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{background-color:transparent;border:none;border-radius:50%;margin-left:6px;outline:none;overflow:hidden;padding:0}.el-tag .el-tag__close:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:2px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group--horizontal{display:inline-block;vertical-align:middle}.el-button-group--horizontal:after,.el-button-group--horizontal:before{content:"";display:table}.el-button-group--horizontal:after{clear:both}.el-button-group--horizontal>.el-button{float:left;position:relative}.el-button-group--horizontal>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group--horizontal>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group--horizontal>.el-button:not(:last-child){margin-right:-1px}.el-button-group--horizontal .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group--horizontal .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group--horizontal>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group--vertical{align-items:stretch;display:inline-flex;flex-direction:column}.el-button-group--vertical>.el-button{margin-top:-1px}.el-button-group--vertical>.el-button:first-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-button-group--vertical>.el-button:last-child{border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical>.el-dropdown{margin-top:-1px}.el-button-group--vertical>.el-dropdown>.el-button{border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0;border-top-right-radius:0}.el-button-group--vertical .el-button--primary:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--primary:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--success:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--warning:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--danger:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:first-child{border-bottom-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:last-child{border-top-color:var(--el-button-divide-border-color)}.el-button-group--vertical .el-button--info:not(:first-child):not(:last-child){border-bottom-color:var(--el-button-divide-border-color);border-top-color:var(--el-button-divide-border-color)}.el-scrollbar{--el-scrollbar-opacity:0.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:0.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;mask:url("data:image/svg+xml;utf8,%3Csvg class=%27icon%27 width=%27200%27 height=%27200%27 viewBox=%270 0 1024 1024%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath fill=%27currentColor%27 d=%27M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z%27%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class=%27icon%27 width=%27200%27 height=%27200%27 viewBox=%270 0 1024 1024%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath fill=%27currentColor%27 d=%27M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z%27%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__wrapper.is-disabled .el-select__prefix,.el-select__wrapper.is-disabled .el-select__suffix{pointer-events:none}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0deg);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px} \ No newline at end of file diff --git a/css/275.bf4b380e.css.gz b/css/275.bf4b380e.css.gz deleted file mode 100644 index 5375bbe..0000000 Binary files a/css/275.bf4b380e.css.gz and /dev/null differ diff --git a/css/419.605c1f2d.css b/css/419.605c1f2d.css deleted file mode 100644 index 56a9ed3..0000000 --- a/css/419.605c1f2d.css +++ /dev/null @@ -1 +0,0 @@ -.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.main-table[data-v-1c7a5eff]{width:95%;max-width:1400px;border-radius:16px;box-shadow:var(--admin-cuscfg-table-shadow);min-height:530px;overflow:hidden;border:1px solid var(--el-border-color-lighter)}.container[data-v-1c7a5eff]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}.header-content[data-v-1c7a5eff]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-1c7a5eff]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-1c7a5eff]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-1c7a5eff]{font-size:.95em}}.header-content[data-v-1c7a5eff]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-1c7a5eff]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-1c7a5eff]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-1c7a5eff]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-1c7a5eff]{display:flex;gap:10px}.main-container[data-v-1c7a5eff]{display:flex;flex-direction:column;align-items:center;margin-top:20px}@media (max-width:768px){.main-container[data-v-1c7a5eff]{margin-top:35px}}.pagination-container[data-v-1c7a5eff]{display:flex;justify-content:center;align-items:center;margin-top:24px;padding-bottom:30px;gap:15px}.pagination-container[data-v-1c7a5eff] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-1c7a5eff] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-1c7a5eff] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-1c7a5eff] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-1c7a5eff] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-1c7a5eff] .btn-next,.pagination-container[data-v-1c7a5eff] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-1c7a5eff] .btn-next:hover,.pagination-container[data-v-1c7a5eff] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.load-more[data-v-1c7a5eff]{cursor:pointer;background-color:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:var(--admin-dashboard-btn-color);border:none;transition:all .3s ease;margin-left:0;border-radius:8px;padding:8px 20px;height:36px}.load-more[data-v-1c7a5eff]:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.15)} \ No newline at end of file diff --git a/css/419.605c1f2d.css.gz b/css/419.605c1f2d.css.gz deleted file mode 100644 index b006264..0000000 Binary files a/css/419.605c1f2d.css.gz and /dev/null differ diff --git a/css/655.3be3f15c.css b/css/655.3be3f15c.css deleted file mode 100644 index 8fd553a..0000000 --- a/css/655.3be3f15c.css +++ /dev/null @@ -1 +0,0 @@ -.history-container[data-v-3d294b36]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:var(--bg-color);z-index:2000;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);backdrop-filter:blur(20px);background:hsla(0,0%,100%,.8);color:var(--upload-text-color)}.dark .history-container[data-v-3d294b36]{background:rgba(30,30,30,.9);color:var(--upload-text-color)}.history-container.active[data-v-3d294b36]{transform:translateY(0)}.history-header[data-v-3d294b36]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(0,0,0,.1)}.dark .history-header[data-v-3d294b36]{border-bottom:1px solid hsla(0,0%,100%,.1)}.header-left[data-v-3d294b36]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-3d294b36]{margin:0;font-size:24px;color:var(--upload-header-color)}.record-count[data-v-3d294b36]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-3d294b36]{display:flex;gap:10px}.history-content[data-v-3d294b36]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-3d294b36]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-3d294b36]{background:var(--upload-list-card-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--upload-list-card-box-shadow);transition:transform .3s ease,box-shadow .3s ease;border:var(--upload-list-card-border)}.grid-item[data-v-3d294b36]:hover{transform:translateY(-5px);box-shadow:0 8px 20px rgba(0,0,0,.1)}.dark .grid-item[data-v-3d294b36]:hover{box-shadow:0 8px 20px hsla(0,0%,100%,.1)}.grid-preview[data-v-3d294b36]{height:160px;position:relative;background:rgba(0,0,0,.05);display:flex;align-items:center;justify-content:center;overflow:hidden}.dark .grid-preview[data-v-3d294b36]{background:hsla(0,0%,100%,.05)}.grid-preview img[data-v-3d294b36],.grid-preview video[data-v-3d294b36]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-3d294b36]{font-size:48px;color:var(--upload-list-file-icon-color)}.grid-overlay[data-v-3d294b36]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-3d294b36]{opacity:1}.grid-actions[data-v-3d294b36]{display:flex;gap:15px}.grid-info[data-v-3d294b36]{padding:10px}.file-name[data-v-3d294b36]{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-3d294b36]{font-size:12px;color:var(--upload-text-color);opacity:.7}.list-view[data-v-3d294b36]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-3d294b36]{display:flex;align-items:center;padding:10px;background:var(--upload-list-card-bg-color);border-radius:8px;border:var(--upload-list-item-border);transition:background .2s ease}.list-item[data-v-3d294b36]:hover{background:hsla(0,0%,100%,.8)}.dark .list-item[data-v-3d294b36]:hover{background:hsla(0,0%,100%,.1)}.list-preview[data-v-3d294b36]{width:50px;height:50px;border-radius:6px;overflow:hidden;margin-right:15px;background:rgba(0,0,0,.05);display:flex;align-items:center;justify-content:center;flex-shrink:0}.dark .list-preview[data-v-3d294b36]{background:hsla(0,0%,100%,.05)}.list-preview img[data-v-3d294b36],.list-preview video[data-v-3d294b36]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-3d294b36]{font-size:24px;color:var(--upload-list-file-icon-color)}.list-info[data-v-3d294b36]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-3d294b36]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.8}.list-meta[data-v-3d294b36]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-3d294b36]{display:flex;gap:5px}.empty-state[data-v-3d294b36]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.6}.empty-icon[data-v-3d294b36]{font-size:64px;margin-bottom:20px}.history-content[data-v-3d294b36]::-webkit-scrollbar{width:8px}.history-content[data-v-3d294b36]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-3d294b36]::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:4px}.history-content[data-v-3d294b36]::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.dark .history-content[data-v-3d294b36]::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2)}.dark .history-content[data-v-3d294b36]::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}.action-btn-view[data-v-3d294b36]{background-color:#f5f7fa;border-color:#dcdfe6;color:#606266}.action-btn-view[data-v-3d294b36]:hover{background-color:#e6e8eb;color:#409eff}.dark .action-btn-view[data-v-3d294b36]{background-color:hsla(0,0%,100%,.4);border-color:transparent;color:#fff}.dark .action-btn-view[data-v-3d294b36]:hover{background-color:hsla(0,0%,100%,.8)}.history-group[data-v-3d294b36]{position:relative;padding-left:30px;border-left:2px solid rgba(0,0,0,.1);margin-left:10px;padding-bottom:30px}.dark .history-group[data-v-3d294b36]{border-left:2px solid hsla(0,0%,100%,.1)}.history-group[data-v-3d294b36]:last-child{border-left:2px solid transparent}.timeline-header[data-v-3d294b36]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-3d294b36]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;border:3px solid var(--theme-toggle-color);background:#fff;z-index:2;box-sizing:border-box}.dark .timeline-dot[data-v-3d294b36]{background:#1a1a1a}.date-label[data-v-3d294b36]{font-size:20px;font-weight:700;color:var(--upload-header-color)}.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}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-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%}}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-6a7fc61f{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-6a7fc61f],.upload-list-card[data-v-6a7fc61f]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-6a7fc61f]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--upload-list-card-bg-color);backdrop-filter:blur(10px);border:var(--upload-list-card-border);box-shadow:var(--upload-list-card-box-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-6a7fc61f] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-6a7fc61f]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-6a7fc61f],.upload-list-container[data-v-6a7fc61f]{width:70vw}}.upload-list-card.upload-list-busy[data-v-6a7fc61f],.upload-list-container.upload-list-busy[data-v-6a7fc61f]{height:40vh}.upload-list-card.is-uploading[data-v-6a7fc61f]{border:1px solid var(--el-upload-dragger-uniform-color,#409eff)!important;box-shadow:0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 30%,transparent),0 0 40px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 15%,transparent),inset 0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 8%,transparent)!important}.upload-list-item-content[data-v-6a7fc61f]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-url-row[data-v-6a7fc61f]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-6a7fc61f]:last-child{margin-bottom:0}.upload-list-item-url[data-v-6a7fc61f]{display:flex;flex-direction:column}@media (max-width:768px){.upload-list-item-content[data-v-6a7fc61f]{margin-left:2px}.upload-list-item-url-row[data-v-6a7fc61f]{width:42vw;flex-direction:column;gap:6px}}.upload-card-wrapper[data-v-6a7fc61f]{position:relative;overflow:visible}.upload-card-glow[data-v-6a7fc61f]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-6a7fc61f]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-6a7fc61f]{width:70vw}}.upload-card-busy[data-v-6a7fc61f] .el-upload-dragger{height:17vh}[data-v-6a7fc61f] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease}[data-v-6a7fc61f] .el-upload:focus .el-upload-dragger{border-color:var(--el-upload-dragger-border-color)}[data-v-6a7fc61f] .el-upload-dragger.is-dragover,[data-v-6a7fc61f] .el-upload-dragger:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-6a7fc61f] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-6a7fc61f]{position:relative;background:none}.upload-card.is-uploading[data-v-6a7fc61f]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 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-6a7fc61f 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-6a7fc61f]{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-6a7fc61f]{font-size:small}}.el-upload__text.upload-list-busy[data-v-6a7fc61f]{font-size:small}.el-icon--upload[data-v-6a7fc61f]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-6a7fc61f]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-6a7fc61f]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-6a7fc61f]{font-size:30px}}.el-upload__tip[data-v-6a7fc61f]{font-size:medium;color:var(--upload-text-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.el-upload__tip[data-v-6a7fc61f]{font-size:small}}.paste-card[data-v-6a7fc61f]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-6a7fc61f]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-6a7fc61f]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-6a7fc61f]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 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-6a7fc61f 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-6a7fc61f] .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-6a7fc61f]{height:17vh}.upload-card-textarea[data-v-6a7fc61f]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,linear-gradient(135deg,rgba(64,158,255,.03) 0,rgba(64,158,255,.01) 100%));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-6a7fc61f]{height:50%}.upload-card-textarea[data-v-6a7fc61f]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:linear-gradient(135deg,rgba(64,158,255,.3),rgba(64,158,255,.1) 50%,rgba(64,158,255,.3));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-6a7fc61f]:hover:before{opacity:1}.upload-card-textarea[data-v-6a7fc61f]:focus-within:before{opacity:1;background:linear-gradient(135deg,rgba(64,158,255,.6),rgba(64,158,255,.2) 50%,rgba(64,158,255,.6))}[data-v-6a7fc61f] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-6a7fc61f] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-6a7fc61f] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-6a7fc61f] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(64,158,255,.03))}[data-v-6a7fc61f] .el-textarea__inner:focus{border-color:transparent;box-shadow:0 0 0 3px rgba(64,158,255,.15),0 4px 20px rgba(64,158,255,.1),inset 0 1px 3px rgba(0,0,0,.05);background:var(--textarea-inner-focus-bg,rgba(64,158,255,.02))}.upload-card-textarea[data-v-6a7fc61f] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-6a7fc61f] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-6a7fc61f] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(64,158,255,.4),rgba(64,158,255,.6));border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-6a7fc61f] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(64,158,255,.6),rgba(64,158,255,.8))}.paste-card-actions[data-v-6a7fc61f]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-6a7fc61f]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:linear-gradient(135deg,#409eff,#66b1ff)!important;border:none!important;box-shadow:0 4px 15px rgba(64,158,255,.35),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-6a7fc61f]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.25),transparent);transition:left .6s ease}.paste-card-upload-button[data-v-6a7fc61f]:hover{transform:translateY(-3px) scale(1.02);box-shadow:0 8px 25px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.paste-card-upload-button[data-v-6a7fc61f]:hover:before{left:100%}.paste-card-upload-button[data-v-6a7fc61f]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-6a7fc61f]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-6a7fc61f]{margin-top:2%}.paste-card-method-group[data-v-6a7fc61f]{background:var(--paste-method-group-bg,rgba(64,158,255,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(64,158,255,.15))}.paste-card-method-group[data-v-6a7fc61f] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-6a7fc61f] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-6a7fc61f] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-6a7fc61f] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(64,158,255,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-6a7fc61f] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:linear-gradient(135deg,#409eff,#66b1ff)!important;color:#fff!important;box-shadow:0 3px 10px rgba(64,158,255,.35)}@media (max-width:768px){.paste-card[data-v-6a7fc61f]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-6a7fc61f]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-6a7fc61f]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-6a7fc61f]:before{border-radius:11px}[data-v-6a7fc61f] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-6a7fc61f]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-6a7fc61f]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-6a7fc61f]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-6a7fc61f] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-6a7fc61f]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;position:sticky;top:0;z-index:1;border-radius:15px;transition:all .3s ease}.upload-list-dashboard.list-scrolled[data-v-6a7fc61f]{background-color:var(--upload-list-dashboard-bg-color);box-shadow:var(--upload-list-dashboard-shadow)}.file-icon[data-v-6a7fc61f]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-url[data-v-6a7fc61f] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-6a7fc61f] .el-input:hover{transform:translateY(-1px)}.upload-list-item-url[data-v-6a7fc61f] .el-input__wrapper{border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);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-6a7fc61f] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-6a7fc61f] .el-input__wrapper:hover{box-shadow:0 2px 8px rgba(0,0,0,.12);border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-6a7fc61f] .el-input__wrapper.is-focus{box-shadow:0 0 0 2px var(--el-color-primary-light-8),0 4px 12px rgba(0,0,0,.15);border-color:var(--el-color-primary)}.upload-list-item-url[data-v-6a7fc61f] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(64,158,255,.08),transparent);animation:shimmer-6a7fc61f 2s infinite;z-index:0}@keyframes shimmer-6a7fc61f{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-6a7fc61f] .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-6a7fc61f] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-6a7fc61f] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-6a7fc61f] .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-6a7fc61f] .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-6a7fc61f] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-6a7fc61f] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-6a7fc61f] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff}.upload-list-item-url[data-v-6a7fc61f] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}.upload-list-item-url[data-v-6a7fc61f] .el-input.is-focus .el-input-group__prepend{animation:prependPulse-6a7fc61f 2s ease-in-out infinite}@keyframes prependPulse-6a7fc61f{0%,to{opacity:1}50%{opacity:.95}}@media (max-width:768px){.upload-list-item-url[data-v-6a7fc61f] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-6a7fc61f] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-6a7fc61f] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}}[data-v-6a7fc61f] .el-upload-dragger{position:relative;overflow:hidden}[data-v-6a7fc61f] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-6a7fc61f] .el-upload-dragger:after,[data-v-6a7fc61f] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-6a7fc61f] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-6a7fc61f]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-6a7fc61f 60s linear infinite}.upload-card[data-v-6a7fc61f]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-6a7fc61f 40s linear infinite,starPulse-6a7fc61f 4s ease-in-out infinite}@keyframes starScroll-6a7fc61f{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-6a7fc61f{0%,to{opacity:.6}50%{opacity:.3}}.upload-list-item-progress[data-v-6a7fc61f]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,linear-gradient(135deg,rgba(64,158,255,.05) 0,rgba(64,158,255,.02) 100%));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(64,158,255,.1))}.upload-list-item-progress[data-v-6a7fc61f] .el-progress{--el-color-primary:#409eff}.upload-list-item-progress[data-v-6a7fc61f] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-6a7fc61f] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,linear-gradient(135deg,rgba(0,0,0,.06) 0,rgba(0,0,0,.03) 100%));box-shadow:inset 0 1px 3px rgba(0,0,0,.08);overflow:hidden}.upload-list-item-progress[data-v-6a7fc61f] .el-progress-bar__inner{border-radius:8px;background:linear-gradient(90deg,#409eff,#66b1ff 50%,#409eff)!important;box-shadow:0 0 12px rgba(64,158,255,.5),0 0 4px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.3);position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-6a7fc61f] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2) 50%,transparent);pointer-events:none}.upload-list-item-progress[data-v-6a7fc61f] .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-6a7fc61f 1s linear infinite}.upload-list-item-progress[data-v-6a7fc61f] .el-progress--success .el-progress-bar__inner{background:linear-gradient(90deg,#67c23a,#85ce61 25%,#95d475 50%,#85ce61 75%,#67c23a)!important;background-size:200% 100%;box-shadow:0 0 12px rgba(103,194,58,.5),0 0 4px rgba(103,194,58,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:none}.upload-list-item-progress[data-v-6a7fc61f] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-6a7fc61f] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-6a7fc61f] .el-progress--exception .el-progress-bar__inner{background:linear-gradient(90deg,#f56c6c,#f78989 25%,#f9a7a7 50%,#f78989 75%,#f56c6c)!important;background-size:200% 100%;box-shadow:0 0 12px hsla(0,87%,69%,.5),0 0 4px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:progressPulse-6a7fc61f 1s ease-in-out infinite}.upload-list-item-progress[data-v-6a7fc61f] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressShine-6a7fc61f{0%{background-position:0 0}to{background-position:200% 0}}@keyframes progressStripes-6a7fc61f{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-6a7fc61f{0%,to{opacity:1}50%{opacity:.7}}@media (max-width:768px){.upload-list-item-progress[data-v-6a7fc61f]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-6a7fc61f] .el-progress-bar__outer{height:8px!important}}.modern-action-group[data-v-6a7fc61f]{display:flex;align-items:center;gap:6px;padding:4px;background:var(--modern-action-group-bg,rgba(64,158,255,.08));border-radius:14px;border:1px solid var(--modern-action-group-border,rgba(64,158,255,.15));box-shadow:0 2px 8px var(--modern-action-group-shadow,rgba(0,0,0,.06));transition:all .3s cubic-bezier(.4,0,.2,1)}.modern-action-group[data-v-6a7fc61f]:hover{background:var(--modern-action-group-hover-bg,rgba(64,158,255,.12));box-shadow:0 4px 16px var(--modern-action-group-hover-shadow,rgba(64,158,255,.15));transform:translateY(-1px)}.modern-action-btn[data-v-6a7fc61f]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:10px;background:var(--modern-action-btn-bg,linear-gradient(135deg,#409eff 0,#66b1ff 100%));color:#fff;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);font-size:14px;box-shadow:0 2px 6px rgba(64,158,255,.25);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-6a7fc61f]:focus,.modern-action-btn[data-v-6a7fc61f]:focus-visible{outline:none!important}.modern-action-btn[data-v-6a7fc61f]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.modern-action-btn[data-v-6a7fc61f]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px rgba(64,158,255,.4)}.modern-action-btn[data-v-6a7fc61f]:hover:before{left:100%}.modern-action-btn[data-v-6a7fc61f]:active{transform:translateY(0) scale(.98);box-shadow:0 1px 4px rgba(64,158,255,.3)}.modern-action-btn-danger[data-v-6a7fc61f]{background:var(--modern-action-btn-danger-bg,linear-gradient(135deg,#f56c6c 0,#f78989 100%));box-shadow:0 2px 6px hsla(0,87%,69%,.25)}.modern-action-btn-danger[data-v-6a7fc61f]:hover{box-shadow:0 4px 12px hsla(0,87%,69%,.4)}.modern-dropdown-item-content[data-v-6a7fc61f]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-6a7fc61f]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-item-name-wrapper[data-v-6a7fc61f]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,linear-gradient(135deg,rgba(64,158,255,.08) 0,rgba(64,158,255,.03) 100%));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(64,158,255,.12));backdrop-filter:blur(4px);transition:all .3s ease}.upload-list-item-name-wrapper[data-v-6a7fc61f]:hover{background:var(--file-name-hover-bg,linear-gradient(135deg,rgba(64,158,255,.12) 0,rgba(64,158,255,.06) 100%));border-color:var(--file-name-hover-border,rgba(64,158,255,.2))}.upload-list-item-name[data-v-6a7fc61f]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.modern-file-action-btn[data-v-6a7fc61f]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-6a7fc61f]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-6a7fc61f]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-6a7fc61f]{background:var(--file-action-primary-bg,linear-gradient(145deg,#409eff 0,#53a8ff 50%,#66b1ff 100%));color:#fff;box-shadow:0 3px 10px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-primary[data-v-6a7fc61f]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-primary[data-v-6a7fc61f]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-6a7fc61f]{background:var(--file-action-danger-bg,linear-gradient(145deg,#f56c6c 0,#f78989 50%,#f9a7a7 100%));color:#fff;box-shadow:0 3px 10px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-danger[data-v-6a7fc61f]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px hsla(0,87%,69%,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-danger[data-v-6a7fc61f]:active{transform:translateY(-1px) scale(1.02)}.upload-list-item[data-v-6a7fc61f]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(64,158,255,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,linear-gradient(135deg,hsla(0,0%,100%,.9) 0,hsla(0,0%,100%,.7) 100%));backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--upload-list-item-shadow,rgba(0,0,0,.04));transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-6a7fc61f]:hover{border-color:var(--upload-list-item-hover-border,rgba(64,158,255,.25));box-shadow:0 4px 16px var(--upload-list-item-hover-shadow,rgba(64,158,255,.12));transform:translateY(-2px)}.upload-list-item-action[data-v-6a7fc61f]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-dashboard-title[data-v-6a7fc61f]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--dashboard-title-bg,linear-gradient(135deg,rgba(64,158,255,.06) 0,transparent 100%));border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-6a7fc61f]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-6a7fc61f]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-6a7fc61f]{width:32px;height:32px;border-radius:8px;font-size:12px}.modern-file-action-btn[data-v-6a7fc61f]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-6a7fc61f]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-6a7fc61f]{font-size:12px;width:32vw}.upload-list-dashboard-title[data-v-6a7fc61f]{font-size:12px;padding:4px 10px}}.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))}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.container[data-v-734aaf0a]{background:var(--bg-color);min-height:100vh}.rotate[data-v-734aaf0a]{animation:spin-734aaf0a 2s ease-in-out}.scale[data-v-734aaf0a]{animation:scale-734aaf0a .5s ease-in-out}@keyframes spin-734aaf0a{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-734aaf0a{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-734aaf0a{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-734aaf0a{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-734aaf0a{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-734aaf0a]{display:inline-block}.mobile-only[data-v-734aaf0a]{display:none}@media (max-width:768px){.desktop-only[data-v-734aaf0a]{display:none!important}.mobile-only[data-v-734aaf0a]{display:flex!important}}.toggle-dark-button[data-v-734aaf0a]{right:30px}.toggle-dark-button[data-v-734aaf0a],.upload-method-button[data-v-734aaf0a]{border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;position:fixed;top:30px}.upload-method-button[data-v-734aaf0a]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;color:var(--theme-toggle-color);right:130px;outline:none}@media (max-width:768px){.upload-method-button[data-v-734aaf0a]{width:2rem;height:2rem}}.upload-method-icon[data-v-734aaf0a]{outline:none}.history-button[data-v-734aaf0a]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:180px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}@media (max-width:768px){.history-button[data-v-734aaf0a]{width:2rem;height:2rem;top:85px;right:80px}}.history-button[data-v-734aaf0a]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-734aaf0a]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:230px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}.announcement-button[data-v-734aaf0a]:hover:not(:disabled){transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-734aaf0a]:disabled{opacity:.5;cursor:not-allowed}.mobile-more-dropdown[data-v-734aaf0a]{position:fixed;top:30px;right:30px;z-index:100}.mobile-more-button[data-v-734aaf0a]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-734aaf0a]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.upload-folder[data-v-734aaf0a]{width:100px;height:2.5rem;position:fixed;top:30px;right:280px;z-index:100;border-radius:12px;transition:all .3s ease,width .4s ease}.upload-folder.no-announcement[data-v-734aaf0a]{right:230px}.upload-folder.active[data-v-734aaf0a]{width:200px}@media (max-width:768px){.upload-folder[data-v-734aaf0a]{width:80px;height:2rem;right:110px}.upload-folder.no-announcement[data-v-734aaf0a]{right:110px}.upload-folder.active[data-v-734aaf0a]{width:120px}}.upload-folder[data-v-734aaf0a] .el-input__wrapper{border-radius:12px}.info-container[data-v-734aaf0a],.upload-folder[data-v-734aaf0a] .el-input__wrapper{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none}.info-container[data-v-734aaf0a]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border-radius:12px;color:var(--theme-toggle-color);transition:all .3s ease;position:fixed;top:30px;right:80px;cursor:pointer}.info-icon[data-v-734aaf0a]{outline:none}@media (max-width:768px){.info-container[data-v-734aaf0a]{width:2rem;height:2rem;right:70px}}.toolbar-manage[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;z-index:200}.toolbar-manage-button[data-v-734aaf0a]{border:none;transition:all .3s ease,border-radius .4s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color);outline:none;border-radius:12px}.toolbar-manage-button.active[data-v-734aaf0a]{border-radius:50%}.toolbar[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;display:flex;flex-direction:column;align-items:center;z-index:100}.toolbar-button[data-v-734aaf0a]{border:none;transition:all .3s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color)}.info-container[data-v-734aaf0a]:hover,.toggle-dark-button[data-v-734aaf0a]:hover,.toolbar-button[data-v-734aaf0a]:hover,.toolbar-manage-button[data-v-734aaf0a]:hover,.upload-folder[data-v-734aaf0a]:hover,.upload-method-button[data-v-734aaf0a]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.compress-button[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.compress-button.active[data-v-734aaf0a]{transform:translateY(-75px);opacity:1}.link-button[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.link-button.active[data-v-734aaf0a]{transform:translateY(-58px) translateX(-50px);opacity:1}.config-button[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.config-button.active[data-v-734aaf0a]{transform:translateY(-11px) translateX(-75px);opacity:1}.sign-out-button[data-v-734aaf0a]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.sign-out-button.active[data-v-734aaf0a]{transform:translateY(42px) translateX(-68px);opacity:1}@media (min-width:768px){.compress-button[data-v-734aaf0a]:hover{transform:translateY(-77px)}.link-button[data-v-734aaf0a]:hover{transform:translateY(-60px) translateX(-52px)}.config-button[data-v-734aaf0a]:hover{transform:translateY(-12px) translateX(-77px)}.sign-out-button[data-v-734aaf0a]:hover{transform:translateY(44px) translateX(-70px)}.compress-icon[data-v-734aaf0a]:hover{animation:scale-734aaf0a .5s ease-in-out}.config-icon[data-v-734aaf0a]:hover{animation:spin-734aaf0a .5s ease-in-out}.link-icon[data-v-734aaf0a]:hover{animation:rotate-shake-734aaf0a .5s ease-in-out}.sign-out-icon[data-v-734aaf0a]:hover{animation:shake-734aaf0a .5s ease-in-out}}[data-v-734aaf0a] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-734aaf0a]{display:flex;justify-content:center;margin-top:20px}.header[data-v-734aaf0a]{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-734aaf0a]{font-size:2.5rem;font-weight:800;font-family:Noto Sans SC,sans-serif;position:relative;padding-bottom:8px;cursor:pointer;transition:all .4s cubic-bezier(.4,0,.2,1);animation:float-734aaf0a 4s ease-in-out infinite;letter-spacing:2px}.title[data-v-734aaf0a]:hover{transform:scale(1.08) translateY(-3px);filter:drop-shadow(0 0 20px var(--el-upload-dragger-uniform-color))}.title[data-v-734aaf0a]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:linear-gradient(90deg,transparent,var(--el-upload-dragger-uniform-color),transparent);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color)}.title[data-v-734aaf0a]:hover:after{width:80%}.main-title[data-v-734aaf0a]{background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;text-decoration:none;display:inline-block;animation:titleShimmer-734aaf0a 3s ease-in-out infinite;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3))}.title:hover .main-title[data-v-734aaf0a]{animation:titleShimmer-734aaf0a 1s ease-in-out infinite;filter:brightness(1.2)}@keyframes float-734aaf0a{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes titleShimmer-734aaf0a{0%{background-position:200%}to{background-position:-200%}}@media (max-width:768px){.title[data-v-734aaf0a]{font-size:1.8rem;letter-spacing:1px}.title[data-v-734aaf0a]:hover{transform:scale(1.05) translateY(-2px)}}.upload-home[data-v-734aaf0a]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-734aaf0a]{margin-bottom:5px;position:relative;top:-3vh}.question-icon[data-v-734aaf0a]{margin:0 3px}.compress-slider[data-v-734aaf0a]{width:80%;margin:0 auto}.footer[data-v-734aaf0a]{height:6vh} \ No newline at end of file diff --git a/css/655.3be3f15c.css.gz b/css/655.3be3f15c.css.gz deleted file mode 100644 index 50d8c2f..0000000 Binary files a/css/655.3be3f15c.css.gz and /dev/null differ diff --git a/css/667.a3c83e09.css b/css/667.a3c83e09.css deleted file mode 100644 index de65328..0000000 --- a/css/667.a3c83e09.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";@keyframes plyr-progress{to{background-position:25px 0;background-position:var(--plyr-progress-loading-size,25px) 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{0%{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;align-items:center;direction:ltr;display:flex;flex-direction:column;font-family:inherit;font-family:var(--plyr-font-family,inherit);font-variant-numeric:tabular-nums;font-weight:400;font-weight:var(--plyr-font-weight-regular,400);line-height:1.7;line-height:var(--plyr-line-height,1.7);max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease;z-index:0}.plyr audio,.plyr iframe,.plyr video{display:block;height:100%;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui :after,.plyr--full-ui :before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5464;background:var(--plyr-badge-background,#4a5464);border-radius:2px;border-radius:var(--plyr-badge-border-radius,2px);color:#fff;color:var(--plyr-badge-text-color,#fff);font-size:9px;font-size:var(--plyr-font-size-badge,9px);line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;display:none;font-size:13px;font-size:var(--plyr-font-size-small,13px);left:0;padding:10px;padding:var(--plyr-control-spacing,10px);position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:15px;font-size:var(--plyr-font-size-base,15px);padding:20px;padding:calc(var(--plyr-control-spacing, 10px)*2)}}@media (min-width:768px){.plyr__captions{font-size:18px;font-size:var(--plyr-font-size-large,18px)}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px);transform:translateY(calc(var(--plyr-control-spacing, 10px)*-4))}.plyr__caption{background:#000c;background:var(--plyr-captions-background,#000c);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#fff;color:var(--plyr-captions-text-color,#fff);line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__caption div{display:inline}.plyr__control{background:#0000;border:0;border-radius:4px;border-radius:var(--plyr-control-radius,4px);color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7);position:relative;transition:all .1s ease-in-out}.plyr__control svg{display:block;fill:currentColor;height:18px;height:var(--plyr-control-icon-size,18px);pointer-events:none;width:18px;width:var(--plyr-control-icon-size,18px)}.plyr__control:focus{outline:0}.plyr__control:focus-visible{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}a.plyr__control{text-decoration:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed,a.plyr__control:after,a.plyr__control:before{display:none}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px;margin-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px;padding-left:calc(var(--plyr-control-spacing, 10px)/4)}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px;padding:0 calc(var(--plyr-control-spacing, 10px)/2)}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip],.plyr__controls:empty{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:#ffffffe6;background:var(--plyr-menu-background,#ffffffe6);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-menu-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-menu-color,#4a5464);font-size:15px;font-size:var(--plyr-font-size-base,15px);margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container:after{border:4px solid #0000;border-top-color:#ffffffe6;border:var(--plyr-menu-arrow-size,4px) solid #0000;border-top-color:var(--plyr-menu-background,#ffffffe6);content:"";height:0;position:absolute;right:14px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7 - var(--plyr-menu-arrow-size, 4px)/2);top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px;padding:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5464;color:var(--plyr-menu-color,#4a5464);display:flex;font-size:13px;font-size:var(--plyr-font-size-menu,var(--plyr-font-size-small,13px));padding:4.66667px 10.5px;padding:calc(var(--plyr-control-spacing, 10px)*.7/1.5) calc(var(--plyr-control-spacing, 10px)*.7*1.5);-webkit-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control:after{border:4px solid #0000;border:var(--plyr-menu-item-arrow-size,4px) solid #0000;content:"";position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px;padding-right:calc(var(--plyr-control-spacing, 10px)*.7*4)}.plyr__menu__container .plyr__control--forward:after{border-left-color:#728197;border-left-color:var(--plyr-menu-arrow-color,#728197);right:6.5px;right:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--forward:focus-visible:after,.plyr__menu__container .plyr__control--forward:hover:after{border-left-color:initial}.plyr__menu__container .plyr__control--back{font-weight:400;font-weight:var(--plyr-font-weight-regular,400);margin:7px;margin:calc(var(--plyr-control-spacing, 10px)*.7);margin-bottom:3.5px;margin-bottom:calc(var(--plyr-control-spacing, 10px)*.7/2);padding-left:28px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*4);position:relative;width:calc(100% - 14px);width:calc(100% - var(--plyr-control-spacing, 10px)*.7*2)}.plyr__menu__container .plyr__control--back:after{border-right-color:#728197;border-right-color:var(--plyr-menu-arrow-color,#728197);left:6.5px;left:calc(var(--plyr-control-spacing, 10px)*.7*1.5 - var(--plyr-menu-item-arrow-size, 4px))}.plyr__menu__container .plyr__control--back:before{background:#dcdfe5;background:var(--plyr-menu-back-border-color,#dcdfe5);box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 var(--plyr-menu-back-border-shadow-color,#fff);content:"";height:1px;left:0;margin-top:3.5px;margin-top:calc(var(--plyr-control-spacing, 10px)*.7/2);overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back:focus-visible:after,.plyr__menu__container .plyr__control--back:hover:after{border-right-color:initial}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7)}.plyr__menu__container .plyr__control[role=menuitemradio]:after,.plyr__menu__container .plyr__control[role=menuitemradio]:before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]:before{background:#0000001a;content:"";display:block;flex-shrink:0;height:16px;margin-right:10px;margin-right:var(--plyr-control-spacing,10px);transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]:after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:before{background:#00b2ff;background:var(--plyr-control-toggle-checked-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)))}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]:after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio]:focus-visible:before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover:before{background:#23282f1a}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;margin-right:calc(var(--plyr-control-spacing, 10px)*.7*-1 + 2px);overflow:hidden;padding-left:24.5px;padding-left:calc(var(--plyr-control-spacing, 10px)*.7*3.5);pointer-events:none}.plyr--full-ui input[type=range]{appearance:none;background:#0000;border:0;border-radius:26px;border-radius:calc(var(--plyr-range-thumb-height, 13px)*2);color:#00b2ff;color:var(--plyr-range-fill-background,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));display:block;height:19px;height:calc(var(--plyr-range-thumb-active-shadow-width, 3px)*2 + var(--plyr-range-thumb-height, 13px));margin:0;min-width:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:#0000;background-image:linear-gradient(90deg,currentColor,#0000 0);background-image:linear-gradient(to right,currentColor var(--value,0),#0000 var(--value,0));border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-webkit-transition:box-shadow .3s ease;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-webkit-slider-thumb{appearance:none;background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:-4px;margin-top:calc((var(--plyr-range-thumb-height, 13px) - var(--plyr-range-track-height, 5px))/2*-1);position:relative;-webkit-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-moz-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);position:relative;-moz-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px)}.plyr--full-ui input[type=range]::-ms-track{color:#0000}.plyr--full-ui input[type=range]::-ms-fill-upper,.plyr--full-ui input[type=range]::-ms-track{background:#0000;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:#0000;background:currentColor;border:0;border-radius:2.5px;border-radius:calc(var(--plyr-range-track-height, 5px)/2);height:5px;height:var(--plyr-range-track-height,5px);-ms-transition:box-shadow .3s ease;transition:box-shadow .3s ease;user-select:none}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;background:var(--plyr-range-thumb-background,#fff);border:0;border-radius:100%;box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33);height:13px;height:var(--plyr-range-thumb-height,13px);margin-top:0;position:relative;-ms-transition:all .2s ease;transition:all .2s ease;width:13px;width:var(--plyr-range-thumb-height,13px)}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]:focus-visible::-webkit-slider-runnable-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-moz-range-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr--full-ui input[type=range]:focus-visible::-ms-track{outline:2px dashed #00b2ff;outline:2px dashed var(--plyr-focus-visible-color,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));outline-offset:2px}.plyr__poster{background-color:#000;background-color:var(--plyr-video-background,var(--plyr-video-background,#000));background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr--youtube.plyr--paused.plyr__poster-enabled:not(.plyr--stopped) .plyr__poster{display:none}.plyr__time{font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__time+.plyr__time:before{content:"⁄";margin-right:10px;margin-right:var(--plyr-control-spacing,10px)}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr__tooltip{background:#fff;background:var(--plyr-tooltip-background,#fff);border-radius:5px;border-radius:var(--plyr-tooltip-radius,5px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);color:#4a5464;color:var(--plyr-tooltip-color,#4a5464);font-size:13px;font-size:var(--plyr-font-size-small,13px);font-weight:400;font-weight:var(--plyr-font-weight-regular,400);left:50%;line-height:1.3;margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:5px 7.5px;padding:calc(var(--plyr-control-spacing, 10px)/2) calc(var(--plyr-control-spacing, 10px)/2*1.5);pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;white-space:nowrap;z-index:2}.plyr__tooltip:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control:focus-visible .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translateY(10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip:before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip:before{left:16px;left:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7)}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translateY(10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip:before{left:auto;right:16px;right:calc(var(--plyr-control-icon-size, 18px)/2 + var(--plyr-control-spacing, 10px)*.7);transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child:focus-visible .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0) scale(1)}.plyr__progress{left:6.5px;left:calc(var(--plyr-range-thumb-height, 13px)*.5);margin-right:13px;margin-right:var(--plyr-range-thumb-height,13px);position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-left:calc(var(--plyr-range-thumb-height, 13px)*-.5);margin-right:-6.5px;margin-right:calc(var(--plyr-range-thumb-height, 13px)*-.5);width:calc(100% + 13px);width:calc(100% + var(--plyr-range-thumb-height, 13px))}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{left:0;max-width:120px;overflow-wrap:break-word}.plyr__progress__buffer{-webkit-appearance:none;background:#0000;border:0;border-radius:100px;height:5px;height:var(--plyr-range-track-height,5px);left:0;margin-top:-2.5px;margin-top:calc(var(--plyr-range-track-height, 5px)/2*-1);padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:#0000}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-webkit-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;min-width:var(--plyr-range-track-height,5px);-moz-transition:width .2s ease;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;-ms-transition:width .2s ease;transition:width .2s ease}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,#23282f99 25%,#0000 0,#0000 50%,#23282f99 0,#23282f99 75%,#0000 0,#0000);background-image:linear-gradient(-45deg,var(--plyr-progress-loading-background,#23282f99) 25%,#0000 25%,#0000 50%,var(--plyr-progress-loading-background,#23282f99) 50%,var(--plyr-progress-loading-background,#23282f99) 75%,#0000 75%,#0000);background-repeat:repeat-x;background-size:25px 25px;background-size:var(--plyr-progress-loading-size,25px) var(--plyr-progress-loading-size,25px);color:#0000}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:#ffffff40;background-color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:#c1c8d199;background-color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr__progress__marker{background-color:#fff;background-color:var(--plyr-progress-marker-background,#fff);border-radius:1px;height:5px;height:var(--plyr-range-track-height,5px);position:absolute;top:50%;transform:translate(-50%,-50%);width:3px;width:var(--plyr-progress-marker-width,3px);z-index:3}.plyr__volume{align-items:center;display:flex;position:relative}.plyr__volume input[type=range]{margin-left:5px;margin-left:calc(var(--plyr-control-spacing, 10px)/2);margin-right:5px;margin-right:calc(var(--plyr-control-spacing, 10px)/2);max-width:90px;min-width:60px;position:relative;z-index:2}.plyr--audio{display:block}.plyr--audio .plyr__controls{background:#fff;background:var(--plyr-audio-controls-background,#fff);border-radius:inherit;color:#4a5464;color:var(--plyr-audio-control-color,#4a5464);padding:10px;padding:var(--plyr-control-spacing,10px)}.plyr--audio .plyr__control:focus-visible,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-audio-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-audio-control-color-hover,#fff)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:#c1c8d199;background-color:var(--plyr-audio-range-track-background,var(--plyr-audio-progress-buffered-background,#c1c8d199))}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #23282f1a;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#23282f1a)}.plyr--audio .plyr__progress__buffer{color:#c1c8d199;color:var(--plyr-audio-progress-buffered-background,#c1c8d199)}.plyr--video{overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;background:var(--plyr-video-background,var(--plyr-video-background,#000));border-radius:inherit;height:100%;margin:auto;overflow:hidden;position:relative;width:100%}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{aspect-ratio:16/9}@supports not (aspect-ratio:16/9){.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%;position:relative}}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr--video .plyr__controls{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;color:var(--plyr-video-control-color,#fff);left:0;padding:5px;padding:calc(var(--plyr-control-spacing, 10px)/2);padding-top:20px;padding-top:calc(var(--plyr-control-spacing, 10px)*2);position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:10px;padding:var(--plyr-control-spacing,10px);padding-top:35px;padding-top:calc(var(--plyr-control-spacing, 10px)*3.5)}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr--video .plyr__control:focus-visible,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));color:#fff;color:var(--plyr-video-control-color-hover,#fff)}.plyr__control--overlaid{background:#00b2ff;background:var(--plyr-video-control-background-hover,var(--plyr-color-main,var(--plyr-color-main,#00b2ff)));border:0;border-radius:100%;color:#fff;color:var(--plyr-video-control-color,#fff);display:none;left:50%;opacity:.9;padding:15px;padding:calc(var(--plyr-control-spacing, 10px)*1.5);position:absolute;top:50%;transform:translate(-50%,-50%);transition:.3s;z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{opacity:1}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:#ffffff40;background-color:var(--plyr-video-range-track-background,var(--plyr-video-progress-buffered-background,#ffffff40))}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px #23282f26,0 0 0 1px #23282f33,0 0 0 3px #ffffff80;box-shadow:var(--plyr-range-thumb-shadow,0 1px 1px #23282f26,0 0 0 1px #23282f33),0 0 0 var(--plyr-range-thumb-active-shadow-width,3px) var(--plyr-audio-range-thumb-active-shadow-color,#ffffff80)}.plyr--video .plyr__progress__buffer{color:#ffffff40;color:var(--plyr-video-progress-buffered-background,#ffffff40)}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen video{height:100%}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:fullscreen .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;inset:0;margin:0;position:fixed;width:100%;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px;font-size:var(--plyr-font-size-xlarge,21px)}}.plyr__ads{border-radius:inherit;cursor:pointer;inset:0;overflow:hidden;position:absolute;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads:after{background:#23282f;border-radius:2px;bottom:10px;bottom:var(--plyr-control-spacing,10px);color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;right:var(--plyr-control-spacing,10px);z-index:3}.plyr__ads:empty:after{display:none}.plyr__cues{background:currentColor;display:block;height:5px;height:var(--plyr-range-track-height,5px);left:0;opacity:.8;position:absolute;top:50%;transform:translateY(-50%);width:3px;z-index:3}.plyr__preview-thumb{background-color:#fff;background-color:var(--plyr-tooltip-background,#fff);border-radius:8px;border-radius:var(--plyr-menu-radius,8px);bottom:100%;box-shadow:0 1px 2px #00000026;box-shadow:var(--plyr-tooltip-shadow,0 1px 2px #00000026);margin-bottom:10px;margin-bottom:calc(var(--plyr-control-spacing, 10px)/2*2);opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translateY(10px) scale(.8);transform-origin:50% 100%;transition:transform .2s ease .1s,opacity .2s ease .1s;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0) scale(1)}.plyr__preview-thumb:before{border-left:4px solid #0000;border-left:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-right:4px solid #0000;border-right:var(--plyr-tooltip-arrow-size,4px) solid #0000;border-top:4px solid #fff;border-top:var(--plyr-tooltip-arrow-size,4px) solid var(--plyr-tooltip-background,#fff);bottom:-4px;bottom:calc(var(--plyr-tooltip-arrow-size, 4px)*-1);content:"";height:0;left:calc(50% + var(--preview-arrow-offset));position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c8d1;border-radius:7px;border-radius:calc(var(--plyr-menu-radius, 8px) - 1px);overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img,.plyr__preview-thumb__image-container:after{height:100%;left:0;position:absolute;top:0;width:100%}.plyr__preview-thumb__image-container:after{border-radius:inherit;box-shadow:inset 0 0 0 1px #00000026;content:"";pointer-events:none}.plyr__preview-thumb__image-container img{max-height:none;max-width:none}.plyr__preview-thumb__time-container{background:linear-gradient(#0000,#000000bf);background:var(--plyr-video-controls-background,linear-gradient(#0000,#000000bf));border-bottom-left-radius:7px;border-bottom-left-radius:calc(var(--plyr-menu-radius, 8px) - 1px);border-bottom-right-radius:7px;border-bottom-right-radius:calc(var(--plyr-menu-radius, 8px) - 1px);bottom:0;left:0;line-height:1.1;padding:20px 6px 6px;position:absolute;right:0;z-index:3}.plyr__preview-thumb__time-container span{color:#fff;font-size:13px;font-size:var(--plyr-font-size-time,var(--plyr-font-size-small,13px))}.plyr__preview-scrubbing{filter:blur(1px);height:100%;inset:0;margin:auto;opacity:0;overflow:hidden;pointer-events:none;position:absolute;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);border:0!important;height:1px!important;overflow:hidden;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}.tm-viewport[data-v-b1094b14]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tm-media[data-v-b1094b14]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-drag:none}.tm-video-wrap[data-v-b1094b14]{width:100%;max-width:800px;touch-action:auto}.plyr-video[data-v-b1094b14]{width:100%}.tm-audio-wrap[data-v-b1094b14]{display:flex;flex-direction:column;align-items:center;gap:20px;padding:24px;width:100%;max-width:400px;touch-action:auto}.plyr-audio[data-v-b1094b14]{width:100%}.audio-cover[data-v-b1094b14]{width:200px;height:200px;border-radius:12px;overflow:hidden;background:hsla(0,0%,100%,.1);display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px rgba(0,0,0,.3)}.cover-img[data-v-b1094b14]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.audio-icon-large[data-v-b1094b14]{width:80px;height:80px;color:hsla(0,0%,100%,.4)}.audio-info[data-v-b1094b14]{text-align:center;width:100%}.audio-title[data-v-b1094b14]{font-size:18px;font-weight:600;color:#fff;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-artist[data-v-b1094b14]{font-size:14px;color:hsla(0,0%,100%,.6)}.audio-placeholder[data-v-b1094b14],.video-placeholder[data-v-b1094b14]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:hsla(0,0%,100%,.4)}.video-placeholder svg[data-v-b1094b14]{width:80px;height:80px}.audio-placeholder .audio-name[data-v-b1094b14]{font-size:14px;color:hsla(0,0%,100%,.6);text-align:center;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plyr{--plyr-color-main:#3b82f6}.plyr--audio .plyr__controls{background:hsla(0,0%,100%,.1);border-radius:8px}.plyr-custom-menu{position:relative;display:flex;align-items:center}.plyr-menu-btn{background:none;border:none;cursor:pointer;padding:8px;color:inherit;display:flex;align-items:center;justify-content:center}.plyr-menu-btn:hover{opacity:.8}.plyr-menu-dropdown{position:absolute;bottom:100%;right:0;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.3);min-width:160px;display:none;z-index:100;overflow:hidden;margin-bottom:8px}.plyr-menu-dropdown.show{display:block}.plyr-menu-item{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;color:#333;font-size:14px;transition:background .15s}.plyr-menu-item:hover{background:#f5f5f5}.plyr-menu-item svg{flex-shrink:0}.plyr-menu-item .arrow{margin-left:auto}.plyr-playmode-submenu,.plyr-speed-submenu{display:none;border-top:1px solid #eee}.plyr-playmode-submenu.show,.plyr-speed-submenu.show{display:block}.plyr-playmode-option,.plyr-speed-option{padding-left:32px;position:relative}.plyr-playmode-option.active,.plyr-speed-option.active{color:#3b82f6;font-weight:600}.plyr-playmode-option.active:before,.plyr-speed-option.active:before{content:"✓";position:absolute;left:12px}@media (max-width:768px),(pointer:coarse){.plyr--audio .plyr__volume{position:relative}.plyr--audio .plyr__volume input[type=range]{position:absolute;bottom:100%;left:50%;transform:translateX(-50%) rotate(-90deg);transform-origin:center center;width:80px;margin-bottom:40px;display:none}.plyr--audio .plyr__volume:focus-within input[type=range],.plyr--audio .plyr__volume:hover input[type=range]{display:block}.plyr--audio .plyr__volume:before{content:"";position:absolute;bottom:100%;left:50%;transform:translateX(-50%);width:36px;height:100px;background:rgba(0,0,0,.8);border-radius:8px;display:none;margin-bottom:8px}.plyr--audio .plyr__volume:focus-within:before,.plyr--audio .plyr__volume:hover:before{display:block}}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.public-browse[data-v-40c0acc5]{min-height:100vh;background:#0a0a0a;color:#fff}.header[data-v-40c0acc5]{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:hsla(0,0%,6%,.95);backdrop-filter:blur(10px);border-bottom:1px solid #1a1a1a;position:relative}.header-left[data-v-40c0acc5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:8px}.header-right[data-v-40c0acc5]{flex:0 0 auto;z-index:1;display:flex;align-items:center;gap:10px}.search-box[data-v-40c0acc5]{display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.1);border-radius:50%;width:28px;height:28px;padding:0;transition:all .3s ease;cursor:pointer}.search-box .search-icon[data-v-40c0acc5]{color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center}.search-box .search-icon svg[data-v-40c0acc5]{width:14px;height:14px}.search-box.expanded[data-v-40c0acc5]{width:auto;min-width:160px;border-radius:14px;padding:4px 10px;background:rgba(30,30,30,.98);box-shadow:0 2px 12px rgba(0,0,0,.3)}.search-box.expanded .search-icon svg[data-v-40c0acc5]{width:12px;height:12px}.search-box.expanded .search-input[data-v-40c0acc5]{width:110px;font-size:12px}.search-box[data-v-40c0acc5]:focus-within{box-shadow:0 0 0 2px rgba(59,130,246,.5)}.search-input[data-v-40c0acc5]{background:transparent;border:none;outline:none;color:#fff;font-size:12px;transition:width .3s}.search-input[data-v-40c0acc5]::-moz-placeholder{color:hsla(0,0%,100%,.5);font-size:11px}.search-input[data-v-40c0acc5]::placeholder{color:hsla(0,0%,100%,.5);font-size:11px}.theme-toggle-btn[data-v-40c0acc5]{display:flex;align-items:center;justify-content:center;background:transparent;border-radius:8px;transition:background .2s}.theme-toggle-btn[data-v-40c0acc5]:hover{background:hsla(0,0%,100%,.1)}@media (max-width:600px){.header-right[data-v-40c0acc5]{gap:8px}.search-box[data-v-40c0acc5]{width:26px;height:26px}.search-box .search-icon svg[data-v-40c0acc5]{width:12px;height:12px}.search-box.expanded[data-v-40c0acc5]{min-width:140px;padding:3px 8px}.search-box.expanded .search-input[data-v-40c0acc5]{width:90px;font-size:11px}.search-box.expanded .search-icon svg[data-v-40c0acc5]{width:11px;height:11px}}.header-center[data-v-40c0acc5]{position:absolute;left:50%;transform:translateX(-50%);z-index:0}.logo[data-v-40c0acc5]{font-size:20px;font-weight:600;color:#fff;text-decoration:none;cursor:pointer;transition:opacity .2s}.logo[data-v-40c0acc5]:hover{opacity:.8}.breadcrumb[data-v-40c0acc5]{display:flex;align-items:center;gap:4px;font-size:14px}.breadcrumb-item[data-v-40c0acc5]{padding:6px 12px;border-radius:6px;cursor:pointer;transition:background .2s;color:#ccc}.breadcrumb-item[data-v-40c0acc5]:hover{background:#252525;color:#fff}.breadcrumb-sep[data-v-40c0acc5]{color:#444}.file-count[data-v-40c0acc5]{color:#666;font-size:14px}.error-container[data-v-40c0acc5],.loading-container[data-v-40c0acc5]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;color:#666}.error-credit[data-v-40c0acc5]{margin-top:40px;text-align:center;color:hsla(0,0%,100%,.4);font-size:14px}.error-credit p[data-v-40c0acc5]{margin-bottom:12px}.error-credit-links[data-v-40c0acc5]{display:flex;gap:24px;justify-content:center}.error-credit-links a[data-v-40c0acc5]{display:flex;align-items:center;gap:6px;color:hsla(0,0%,100%,.5);text-decoration:none;transition:color .2s}.error-credit-links a[data-v-40c0acc5]:hover{color:#3b82f6}.loading-spinner[data-v-40c0acc5]{width:48px;height:48px;border:3px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-40c0acc5 1s linear infinite}.loading-spinner-small[data-v-40c0acc5]{width:24px;height:24px;border:2px solid #222;border-top-color:#3b82f6;border-radius:50%;animation:spin-40c0acc5 1s linear infinite}@keyframes spin-40c0acc5{to{transform:rotate(1turn)}}.retry-btn[data-v-40c0acc5]{margin-top:20px;padding:10px 32px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:background .2s}.retry-btn[data-v-40c0acc5]:hover{background:#2563eb}.gallery-container[data-v-40c0acc5]{padding:8px}@media (min-width:1200px){.gallery-container[data-v-40c0acc5]{max-width:1400px;margin:0 auto;padding:24px}}.folders-section[data-v-40c0acc5]{margin-bottom:24px}.folders-grid[data-v-40c0acc5]{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.folder-card[data-v-40c0acc5]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:#141414;border-radius:12px;border:1px solid #1a1a1a;cursor:pointer;transition:all .2s}.folder-card[data-v-40c0acc5]:hover{background:#1a1a1a;border-color:#333;transform:translateY(-2px)}.folder-icon[data-v-40c0acc5]{width:48px;height:48px;margin-bottom:12px;color:#555}.folder-icon svg[data-v-40c0acc5]{width:100%;height:100%}.folder-name[data-v-40c0acc5]{font-size:14px;color:#999;text-align:center;word-break:break-all}.waterfall[data-v-40c0acc5]{display:flex;gap:16px}.waterfall-column[data-v-40c0acc5]{flex:1;display:flex;flex-direction:column;gap:16px}.waterfall-item[data-v-40c0acc5]{cursor:pointer}.image-wrapper[data-v-40c0acc5]{position:relative;border-radius:12px;overflow:hidden;background:#141414;border:1px solid #1a1a1a;min-height:180px}.image-wrapper[data-v-40c0acc5]:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#141414 25%,#1a1a1a 50%,#141414 75%);background-size:200% 100%;animation:shimmer-40c0acc5 1.5s infinite;z-index:1;pointer-events:none}.image-wrapper.loaded[data-v-40c0acc5]:before{display:none}.image-wrapper.loaded[data-v-40c0acc5]{min-height:auto}.image-wrapper img[data-v-40c0acc5],.image-wrapper video[data-v-40c0acc5]{width:100%;display:block;position:relative;z-index:2}@keyframes shimmer-40c0acc5{0%{background-position:200% 0}to{background-position:-200% 0}}.image-wrapper[data-v-40c0acc5]:hover{border-color:#333}.overlay[data-v-40c0acc5]{position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(0,0,0,.85));opacity:0;transition:opacity .2s;display:flex;align-items:flex-end;justify-content:flex-end;padding:12px;z-index:10}.image-wrapper:hover .overlay[data-v-40c0acc5]{opacity:1}.file-placeholder[data-v-40c0acc5]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#141414;color:#555;gap:12px;padding:16px;box-sizing:border-box}.file-placeholder svg[data-v-40c0acc5]{width:48px;height:48px}.file-name[data-v-40c0acc5]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.audio-placeholder[data-v-40c0acc5]{width:100%;height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#16213e);gap:12px;padding:16px;box-sizing:border-box}.audio-icon[data-v-40c0acc5]{width:48px;height:48px;color:hsla(0,0%,100%,.6)}.audio-name[data-v-40c0acc5]{font-size:12px;color:hsla(0,0%,100%,.7);text-align:center;word-break:break-all;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.overlay-actions[data-v-40c0acc5]{display:flex;gap:8px}.action-btn[data-v-40c0acc5]{width:32px;height:32px;border:none;border-radius:50%;background:hsla(0,0%,100%,.08);backdrop-filter:blur(8px);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6)}.action-btn svg[data-v-40c0acc5]{width:16px;height:16px}.action-btn[data-v-40c0acc5]:hover{background:hsla(0,0%,100%,.2);color:#fff;transform:scale(1.1)}.load-trigger[data-v-40c0acc5]{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;min-height:100px}.floating-page-indicator[data-v-40c0acc5]{position:fixed;bottom:24px;right:24px;background:rgba(0,0,0,.6);backdrop-filter:blur(8px);color:hsla(0,0%,100%,.85);padding:6px 12px;border-radius:16px;font-size:12px;z-index:50;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:opacity .3s}@media (max-width:600px){.floating-page-indicator[data-v-40c0acc5]{bottom:16px;right:16px;padding:4px 10px;font-size:11px;border-radius:12px}}.loading-more[data-v-40c0acc5]{display:flex;align-items:center;gap:12px;color:#666;font-size:14px}.no-more[data-v-40c0acc5]{color:#444;font-size:14px}.credit-link[data-v-40c0acc5]{display:block;margin-top:8px;color:#555;font-size:12px;text-decoration:none;transition:color .2s;text-align:center}.credit-link[data-v-40c0acc5]:hover{color:#888}.preview-modal[data-v-40c0acc5]{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.97);display:flex;align-items:center;justify-content:center;overflow:hidden}.preview-content[data-v-40c0acc5]{padding:60px 80px;box-sizing:border-box;overflow:hidden}.preview-content-mobile[data-v-40c0acc5],.preview-content[data-v-40c0acc5]{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.preview-content-mobile[data-v-40c0acc5]{flex-direction:column;padding:0;position:absolute;top:0;left:0}.mobile-video-native[data-v-40c0acc5]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#000}.mobile-audio-wrap[data-v-40c0acc5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;box-sizing:border-box}.mobile-audio-wrap .swipe-hint[data-v-40c0acc5]{margin-top:20px}.swipe-hint[data-v-40c0acc5]{font-size:12px;color:hsla(0,0%,100%,.4)}.other-file-preview[data-v-40c0acc5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:hsla(0,0%,100%,.6);gap:16px}.other-file-preview svg[data-v-40c0acc5]{width:64px;height:64px}.other-file-preview .file-name[data-v-40c0acc5]{font-size:14px;color:hsla(0,0%,100%,.7);text-align:center;padding:0 20px;word-break:break-all}.swipe-viewport[data-v-40c0acc5]{width:100%;height:100%;overflow:hidden;position:relative}.swipe-track[data-v-40c0acc5]{width:300%;height:100%;display:flex;will-change:transform}.swipe-slide[data-v-40c0acc5]{width:33.333%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.preview-image[data-v-40c0acc5],.preview-video[data-v-40c0acc5]{max-width:100%;max-height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.preview-close[data-v-40c0acc5]{position:fixed;top:20px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-close[data-v-40c0acc5]:hover{background:hsla(0,0%,100%,.2)}.preview-close svg[data-v-40c0acc5]{width:28px;height:28px}.page-indicator[data-v-40c0acc5]{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:hsla(0,0%,100%,.8);padding:8px 16px;border-radius:20px;font-size:14px;z-index:1010}.preview-next[data-v-40c0acc5],.preview-prev[data-v-40c0acc5]{position:fixed;top:50%;transform:translateY(-50%);background:hsla(0,0%,100%,.1);border:none;color:#fff;padding:16px;cursor:pointer;border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.preview-next[data-v-40c0acc5]:hover,.preview-prev[data-v-40c0acc5]:hover{background:hsla(0,0%,100%,.2)}.preview-next svg[data-v-40c0acc5],.preview-prev svg[data-v-40c0acc5]{width:32px;height:32px}.preview-prev[data-v-40c0acc5]{left:20px}.preview-next[data-v-40c0acc5]{right:20px}.rotate-btn[data-v-40c0acc5]{position:fixed;bottom:30px;right:20px;background:hsla(0,0%,100%,.1);border:none;color:#fff;cursor:pointer;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;z-index:1010}.rotate-btn[data-v-40c0acc5]:hover{background:hsla(0,0%,100%,.2)}.rotate-btn svg[data-v-40c0acc5]{width:24px;height:24px}@media (max-width:768px){.page-indicator[data-v-40c0acc5]{bottom:40px}}@media (max-width:1199px) and (min-width:601px){.gallery-container[data-v-40c0acc5]{padding:12px}.waterfall-column[data-v-40c0acc5],.waterfall[data-v-40c0acc5]{gap:10px}.image-wrapper[data-v-40c0acc5]{border-radius:8px}}@media (max-width:600px){.header[data-v-40c0acc5]{padding:10px 12px}.header-left .logo[data-v-40c0acc5]{font-size:16px}.breadcrumb[data-v-40c0acc5]{font-size:12px}.breadcrumb-item[data-v-40c0acc5]{padding:4px 8px}.file-count[data-v-40c0acc5]{font-size:12px}.gallery-container[data-v-40c0acc5]{padding:6px}.waterfall-column[data-v-40c0acc5],.waterfall[data-v-40c0acc5]{gap:6px}.image-wrapper[data-v-40c0acc5]{border-radius:6px;min-height:120px}.folders-section[data-v-40c0acc5]{margin-bottom:12px}.folders-grid[data-v-40c0acc5]{grid-template-columns:repeat(2,1fr);gap:8px}.folder-card[data-v-40c0acc5]{padding:16px 12px;border-radius:8px}.folder-icon[data-v-40c0acc5]{width:36px;height:36px;margin-bottom:8px}.folder-name[data-v-40c0acc5]{font-size:12px}.load-trigger[data-v-40c0acc5]{padding:24px;min-height:60px}}.copy-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:rgba(0,0,0,.8);color:#fff;padding:10px 24px;border-radius:20px;font-size:14px;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none}.copy-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}:root:not(.dark) .public-browse[data-v-40c0acc5]{background:#f5f5f5;color:#333}:root:not(.dark) .header[data-v-40c0acc5]{background:hsla(0,0%,100%,.95);border-bottom-color:#e0e0e0}:root:not(.dark) .logo[data-v-40c0acc5]{color:#333}:root:not(.dark) .breadcrumb-item[data-v-40c0acc5]{color:#666}:root:not(.dark) .breadcrumb-item[data-v-40c0acc5]:hover{background:#e8e8e8;color:#333}:root:not(.dark) .breadcrumb-sep[data-v-40c0acc5]{color:#ccc}:root:not(.dark) .file-count[data-v-40c0acc5]{color:#999}:root:not(.dark) .search-box[data-v-40c0acc5]{background:rgba(0,0,0,.08)}:root:not(.dark) .search-box.expanded[data-v-40c0acc5]{background:hsla(0,0%,100%,.98);box-shadow:0 4px 20px rgba(0,0,0,.15)}:root:not(.dark) .search-box.expanded .search-input[data-v-40c0acc5]{color:#333}:root:not(.dark) .search-box.expanded .search-input[data-v-40c0acc5]::-moz-placeholder{color:rgba(0,0,0,.4)}:root:not(.dark) .search-box.expanded .search-input[data-v-40c0acc5]::placeholder{color:rgba(0,0,0,.4)}:root:not(.dark) .search-box .search-icon[data-v-40c0acc5]{color:rgba(0,0,0,.6)}:root:not(.dark) .search-box .search-icon[data-v-40c0acc5]:hover{color:#333}:root:not(.dark) .error-container[data-v-40c0acc5],:root:not(.dark) .loading-container[data-v-40c0acc5]{color:#999}:root:not(.dark) .error-credit[data-v-40c0acc5]{color:rgba(0,0,0,.4)}:root:not(.dark) .error-credit-links a[data-v-40c0acc5]{color:rgba(0,0,0,.5)}:root:not(.dark) .loading-spinner-small[data-v-40c0acc5],:root:not(.dark) .loading-spinner[data-v-40c0acc5]{border-color:#ddd;border-top-color:#3b82f6}:root:not(.dark) .folder-card[data-v-40c0acc5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .folder-card[data-v-40c0acc5]:hover{background:#fafafa;border-color:#ccc}:root:not(.dark) .folder-icon[data-v-40c0acc5]{color:#999}:root:not(.dark) .folder-name[data-v-40c0acc5]{color:#666}:root:not(.dark) .image-wrapper[data-v-40c0acc5]{background:#fff;border-color:#e0e0e0}:root:not(.dark) .image-wrapper[data-v-40c0acc5]:before{background:linear-gradient(90deg,#f5f5f5 25%,#fff 50%,#f5f5f5 75%)}:root:not(.dark) .image-wrapper[data-v-40c0acc5]:hover{border-color:#ccc}:root:not(.dark) .file-placeholder[data-v-40c0acc5]{background:#f5f5f5;color:#999}:root:not(.dark) .file-name[data-v-40c0acc5]{color:rgba(0,0,0,.6)}:root:not(.dark) .audio-placeholder[data-v-40c0acc5]{background:linear-gradient(135deg,#e8f4f8,#d4e5f7)}:root:not(.dark) .audio-icon[data-v-40c0acc5]{color:rgba(0,0,0,.4)}:root:not(.dark) .audio-name[data-v-40c0acc5]{color:rgba(0,0,0,.6)}:root:not(.dark) .no-more[data-v-40c0acc5]{color:#bbb}:root:not(.dark) .credit-link[data-v-40c0acc5]{color:#aaa}:root:not(.dark) .credit-link[data-v-40c0acc5]:hover{color:#666}:root:not(.dark) .loading-more[data-v-40c0acc5]{color:#999}:root:not(.dark) .theme-toggle-btn[data-v-40c0acc5]:hover{background:rgba(0,0,0,.08)}:root:not(.dark) .floating-page-indicator[data-v-40c0acc5]{background:hsla(0,0%,100%,.85);color:rgba(0,0,0,.7);box-shadow:0 2px 8px rgba(0,0,0,.1)} \ No newline at end of file diff --git a/css/667.a3c83e09.css.gz b/css/667.a3c83e09.css.gz deleted file mode 100644 index b935d05..0000000 Binary files a/css/667.a3c83e09.css.gz and /dev/null differ diff --git a/css/845.6b45e8e3.css b/css/845.6b45e8e3.css deleted file mode 100644 index 7440908..0000000 --- a/css/845.6b45e8e3.css +++ /dev/null @@ -1 +0,0 @@ -.whitelist-container[data-v-ca56fa40]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#667eea 0,#764ba2 100%));color:var(--text-color,#333)}.background-wrapper[data-v-ca56fa40]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.whitelist-content[data-v-ca56fa40]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-ca56fa40]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-ca56fa40]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-ca56fa40]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.status-animation[data-v-ca56fa40]{margin-bottom:2rem;position:relative}.status-icon[data-v-ca56fa40]{position:relative;display:inline-block;margin-bottom:1rem}.shield-icon[data-v-ca56fa40]{font-size:4rem;color:var(--primary-color,#409eff);animation:pulse-ca56fa40 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(64,158,255,.3))}.status-badge[data-v-ca56fa40]{position:absolute;bottom:-5px;right:-5px;background:#f56c6c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.2)}.clock-icon[data-v-ca56fa40]{color:#fff;font-size:.8rem;animation:tick-ca56fa40 1s ease-in-out infinite}.status-info[data-v-ca56fa40]{animation:fadeInUp-ca56fa40 1s ease-out .5s both}.status-title[data-v-ca56fa40]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.status-description[data-v-ca56fa40]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-ca56fa40]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-ca56fa40]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-ca56fa40]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-ca56fa40]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-ca56fa40]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-ca56fa40]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-ca56fa40]{margin-right:8px}.help-info[data-v-ca56fa40]{animation:fadeInUp-ca56fa40 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-ca56fa40]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-ca56fa40]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-ca56fa40]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-ca56fa40]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.powered-by[data-v-ca56fa40]{animation:fadeInUp-ca56fa40 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-ca56fa40]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-ca56fa40]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-ca56fa40]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-ca56fa40]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-ca56fa40]{position:absolute;background:rgba(64,158,255,.1);border-radius:50%;animation:floatShapes-ca56fa40 8s ease-in-out infinite}.shape-1[data-v-ca56fa40]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-ca56fa40]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(103,194,58,.1)}.shape-3[data-v-ca56fa40]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-ca56fa40]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,87%,69%,.1)}.shape-5[data-v-ca56fa40]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(230,162,60,.1)}@keyframes pulse-ca56fa40{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes tick-ca56fa40{0%,to{transform:rotate(0deg)}50%{transform:rotate(180deg)}}@keyframes floatShapes-ca56fa40{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-ca56fa40{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.whitelist-content[data-v-ca56fa40]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-ca56fa40]{top:-20px;right:-20px}.shield-icon[data-v-ca56fa40]{font-size:3rem}.status-title[data-v-ca56fa40]{font-size:1.5rem}.status-description[data-v-ca56fa40]{font-size:1rem}.status-description-en[data-v-ca56fa40]{font-size:.9rem}.status-actions[data-v-ca56fa40]{flex-direction:column;align-items:center}.action-btn[data-v-ca56fa40]{width:200px}.quick-links[data-v-ca56fa40]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-ca56fa40]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.whitelist-content[data-v-ca56fa40]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-ca56fa40]{font-size:1.3rem}.status-description[data-v-ca56fa40]{font-size:.95rem}.status-description-en[data-v-ca56fa40]{font-size:.85rem}.shield-icon[data-v-ca56fa40]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.whitelist-container[data-v-ca56fa40]{background:var(--bg-color,linear-gradient(135deg,#2c3e50 0,#34495e 100%));color:var(--text-color,#e4e7ed)}.whitelist-content[data-v-ca56fa40]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-ca56fa40],.status-title[data-v-ca56fa40]{color:var(--text-color,#e4e7ed)}.help-text[data-v-ca56fa40],.powered-by p[data-v-ca56fa40],.status-description-en[data-v-ca56fa40]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/css/845.6b45e8e3.css.gz b/css/845.6b45e8e3.css.gz deleted file mode 100644 index 9df35d1..0000000 Binary files a/css/845.6b45e8e3.css.gz and /dev/null differ diff --git a/css/900.0729d2d2.css b/css/900.0729d2d2.css deleted file mode 100644 index f5b7f9f..0000000 --- a/css/900.0729d2d2.css +++ /dev/null @@ -1 +0,0 @@ -:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__active-bar.is-bottom{bottom:auto}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-bottom:after{bottom:auto;top:0}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);box-sizing:border-box;height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);margin-top:-1px;transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translateX(100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translateX(-100%);transform-origin:0 0}to{opacity:1;transform:translateX(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translateX(0);transform-origin:0 0}to{opacity:0;transform:translateX(-100%);transform-origin:0 0}}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.batch-tag-container[data-v-dacf7742]{padding:0}.tab-content[data-v-dacf7742]{padding:20px}.tab-description[data-v-dacf7742]{margin:0 0 15px 0;color:#606266;font-size:14px}.input-section[data-v-dacf7742]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-dacf7742]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-dacf7742]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-dacf7742]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.common-tags-section[data-v-dacf7742],.tags-to-add-section[data-v-dacf7742]{margin-bottom:20px}.common-tags-section h4[data-v-dacf7742],.tags-to-add-section h4[data-v-dacf7742]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-dacf7742]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-dacf7742]{cursor:default}.empty-message[data-v-dacf7742]{color:#909399;font-size:13px;padding:10px 0}.action-buttons[data-v-dacf7742]{margin-top:20px;display:flex;justify-content:flex-end}.tag-management-container[data-v-8b4291b4]{padding:10px 0}.input-section[data-v-8b4291b4]{position:relative;margin-bottom:20px}.suggestions-panel[data-v-8b4291b4]{position:absolute;top:100%;left:0;right:0;background:var(--admin-dashboard-tag-suggestion-bg-color);border:1px solid var(--admin-dashboard-tag-suggestion-border-color);border-radius:4px;box-shadow:var(--admin-dashboard-tag-suggestion-box-shadow);max-height:200px;overflow-y:auto;z-index:1000;margin-top:4px}.suggestion-item[data-v-8b4291b4]{padding:8px 12px;cursor:pointer;transition:background-color .2s}.suggestion-item[data-v-8b4291b4]:hover{background-color:var(--admin-dashboard-tag-suggestion-item-hover-bg-color)}.current-tags-section[data-v-8b4291b4],.popular-tags-section[data-v-8b4291b4]{margin-bottom:20px}.current-tags-section h4[data-v-8b4291b4],.popular-tags-section h4[data-v-8b4291b4]{margin:0 0 10px 0;font-size:14px;color:#606266}.tags-container[data-v-8b4291b4]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px}.tag-item[data-v-8b4291b4]{cursor:default}.tag-item.clickable[data-v-8b4291b4]{cursor:pointer;transition:transform .2s}.tag-item.clickable[data-v-8b4291b4]:hover{transform:translateY(-2px)}.empty-message[data-v-8b4291b4]{color:#909399;font-size:13px;padding:10px 0}.dialog-footer[data-v-8b4291b4]{display:flex;justify-content:flex-end}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-aside{overflow:auto;width:var(--el-aside-width,300px)}.el-aside,.el-footer{box-sizing:border-box;flex-shrink:0}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-header{--el-header-padding:0 20px;--el-header-height:60px;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-header,.el-main{box-sizing:border-box}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination .btn-next,.el-pagination .btn-prev{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination .btn-next *,.el-pagination .btn-prev *{pointer-events:none}.el-pagination .btn-next:focus,.el-pagination .btn-prev:focus{outline:none}.el-pagination .btn-next:hover,.el-pagination .btn-prev:hover{color:var(--el-pagination-hover-color)}.el-pagination .btn-next.is-active,.el-pagination .btn-prev.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination .btn-next.is-active.is-disabled,.el-pagination .btn-prev.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination .btn-next.is-disabled,.el-pagination .btn-next:disabled,.el-pagination .btn-prev.is-disabled,.el-pagination .btn-prev:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination .btn-next:focus-visible,.el-pagination .btn-prev:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translateX(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translateX(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.el-image-viewer-parent--hidden{overflow:hidden}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);display:flex;flex-direction:column;overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{flex:1;overflow:auto;padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:50%;position:absolute;top:50%;transform:translate(-45%,-60%) rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}#themeToggle[data-v-4c6ec90c]{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;transition-property:background-color,border-color,color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.theme_toggle_circle1[data-v-4c6ec90c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-4c6ec90c]{transition:all .5s ease-in-out;fill:var(--admin-theme-toggle-bg-color)}.theme_toggle_svg[data-v-4c6ec90c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--admin-theme-toggle-color)}.dark.theme_toggle_svg[data-v-4c6ec90c]{transform:rotate(40deg)}.theme_toggle_g[data-v-4c6ec90c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-4c6ec90c],.icon-fade-leave-active[data-v-4c6ec90c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-4c6ec90c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-4c6ec90c],.icon-fade-leave-from[data-v-4c6ec90c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-4c6ec90c]{display:inline-block}.tabs[data-v-4673d77a]{display:flex;align-items:center;justify-content:center;gap:12px}.title[data-v-4673d77a]{display:flex;align-items:center;gap:10px;font-size:1.2em;font-weight:700;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);padding:6px 14px;border-radius:10px;background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(139,92,246,.05));border:1px solid rgba(99,102,241,.15)}.title[data-v-4673d77a]:hover{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(139,92,246,.1));border-color:rgba(99,102,241,.25);transform:translateY(-1px)}.title .fa-images[data-v-4673d77a]{font-size:1em;color:var(--el-color-primary);background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tabs-dropdown[data-v-4673d77a]{display:flex;align-items:center}.tabs-dropdown-link[data-v-4673d77a]{cursor:pointer;font-size:1.5em;transition:all .3s ease;color:var(--admin-container-color);padding:6px 10px;border-radius:8px;background:transparent}.tabs-dropdown-link.rotate-up[data-v-4673d77a],.tabs-dropdown-link[data-v-4673d77a]:hover{background:rgba(99,102,241,.1);color:var(--el-color-primary)}@media (max-width:768px){.title[data-v-4673d77a]{font-size:1.3em;padding:4px 10px;gap:6px}.tabs-dropdown-link[data-v-4673d77a]{font-size:1.3em;padding:4px 8px}}.el-dropdown__popper.el-popper.tabs-dropdown-popper{border-radius:12px;border:none;background-color:var(--tabs-dropdown-popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--tabs-dropdown-popper-shadow)}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu{border:none;background:none}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item{border:none;background:none;font-size:16px;font-weight:700;transition:font-size .3s ease}.el-dropdown__popper.el-popper.tabs-dropdown-popper .el-dropdown-menu__item:hover{font-size:18px}.container[data-v-924c2ffc]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0}[data-v-924c2ffc] .el-container,[data-v-924c2ffc] .el-main{overflow:visible}[data-v-924c2ffc] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.header-content[data-v-924c2ffc]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-924c2ffc]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-924c2ffc]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-924c2ffc]{font-size:.95em}.header-content .actions[data-v-924c2ffc]{gap:10px}.search-card[data-v-924c2ffc] .el-input__inner{height:28px;font-size:.85em;width:50vw}.search-card[data-v-924c2ffc] .el-input__wrapper{padding:0 10px}.search-card[data-v-924c2ffc] .el-input__inner:focus{width:65vw}}.header-content[data-v-924c2ffc]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-924c2ffc]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-924c2ffc]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-924c2ffc]:hover{color:var(--admin-purple);transform:scale(1.2)}.breadcrumb-container[data-v-924c2ffc]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 10px;margin-bottom:4px}@media (max-width:768px){.breadcrumb-container[data-v-924c2ffc]{flex-direction:row;align-items:center;gap:8px;padding:0 5px;margin-bottom:2px}}.stats-badge[data-v-924c2ffc]{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:var(--el-text-color-secondary);background:var(--el-fill-color-light);padding:4px 10px;border-radius:12px;border:1px solid var(--el-border-color-lighter);transition:all .2s ease;white-space:nowrap;flex-shrink:0}.stats-badge[data-v-924c2ffc]:hover{background:var(--el-fill-color);color:var(--admin-purple);border-color:var(--admin-purple)}.stats-badge-icon[data-v-924c2ffc]{font-size:11px;opacity:.8}@media (max-width:768px){.stats-badge[data-v-924c2ffc]{font-size:10px;padding:2px 6px;border-radius:8px}.stats-badge-icon[data-v-924c2ffc]{font-size:9px}}.header-content .actions[data-v-924c2ffc]{display:flex;align-items:center;gap:15px}@media (max-width:768px){.header-content .actions[data-v-924c2ffc]{margin-top:10px}}.header-content .actions i[data-v-924c2ffc]{font-size:1.5em;cursor:pointer;transition:color .3s,transform .3s;color:var(--admin-container-color)}.header-content .actions i[data-v-924c2ffc]:hover{color:var(--admin-purple);transform:scale(1.2)}.header-content .actions .el-dropdown-link i[data-v-924c2ffc]{color:var(--admin-container-color)}.header-content .actions .el-dropdown-link i[data-v-924c2ffc]:hover{color:var(--admin-purple)}.header-content .actions .disabled[data-v-924c2ffc]{color:#bbb;pointer-events:none}.header-content .actions .enabled[data-v-924c2ffc]{color:var(--admin-purple)}.batch-action-item-icon[data-v-924c2ffc]{width:20px;margin-right:5px}.search-card[data-v-924c2ffc]{margin-left:auto;margin-right:20px}@media (max-width:768px){.search-card[data-v-924c2ffc]{margin-right:0;margin-left:0;margin-top:10px}}.search-card[data-v-924c2ffc] .el-input__wrapper{border-radius:20px;background:var(--admin-dashboard-search-card-bg-color);box-shadow:var(--admin-dashboard-search-card-box-shadow);transition:background-color .3s}.search-card[data-v-924c2ffc] .el-input__inner{width:300px;height:40px;font-size:1.2em;border:none;transition:width .3s;background:none}.search-card[data-v-924c2ffc] .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;-moz-transition:all .3s ease;transition:all .3s ease}.search-card[data-v-924c2ffc] .el-input__inner::placeholder{color:var(--el-text-color-placeholder);font-style:italic;font-weight:400;font-size:14px;opacity:.6;letter-spacing:.5px;transition:all .3s ease}.search-card[data-v-924c2ffc] .el-input__inner:focus::-moz-placeholder{opacity:.4;transform:translateX(5px)}.search-card[data-v-924c2ffc] .el-input__inner:focus::placeholder{opacity:.4;transform:translateX(5px)}@media (max-width:768px){.search-card[data-v-924c2ffc] .el-input__inner{width:60vw}}.search-card[data-v-924c2ffc] .el-input__inner:focus{width:400px}@media (max-width:768px){.search-card[data-v-924c2ffc] .el-input__inner:focus{width:80vw}}.search-icon[data-v-924c2ffc]{cursor:pointer;color:var(--admin-container-color);transition:all .3s ease;font-size:1.3em;opacity:0;transform:scale(.8);pointer-events:none}.search-card:focus-within .search-icon[data-v-924c2ffc]{opacity:1;transform:scale(1);pointer-events:auto}.search-card:focus-within .search-icon[data-v-924c2ffc]:hover{color:var(--admin-purple);transform:scale(1.2)}.search-card[data-v-924c2ffc] .el-input__suffix{display:flex;align-items:center;right:10px}.main-container[data-v-924c2ffc]{display:flex;flex-direction:column;padding:20px 60px;min-height:calc(100vh - 80px)}@media (max-width:768px){.main-container[data-v-924c2ffc]{margin-top:12vh}}.content[data-v-924c2ffc]{display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(3,1fr);gap:20px;padding:10px;padding-bottom:0;flex-grow:1;min-height:80vh}@media (max-width:768px){.content[data-v-924c2ffc]{grid-template-columns:1fr;grid-template-rows:none}}.img-card[data-v-924c2ffc]{width:100%;height:22vh;background:var(--admin-dashboard-imgcard-bg-color);border-radius:8px;box-shadow:var(--admin-dashboard-imgcard-shadow);overflow:hidden;position:relative;transition:transform .3s ease}.img-card[data-v-924c2ffc] .el-card__body{padding:0;height:100%;overflow:hidden}.img-card[data-v-924c2ffc]:hover{transform:scale(1.05)}.image-preview[data-v-924c2ffc]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease,opacity .3s ease;filter:var(--image-preview-filter)}.img-card:hover .file-icon[data-v-924c2ffc],.img-card:hover .folder-icon-svg[data-v-924c2ffc],.img-card:hover .image-preview[data-v-924c2ffc],.img-card:hover .video-preview[data-v-924c2ffc]{transform:scale(1.08)}.image-preview[data-v-924c2ffc]:hover{opacity:.8}.file-short-info[data-v-924c2ffc]{position:absolute;z-index:10;top:3px;left:3px;display:flex;gap:5px;align-items:start}.success-tag[data-v-924c2ffc]{background-color:rgba(34,139,34,.6);border:1px solid rgba(34,139,34,.7);border-radius:6px}.fail-tag[data-v-924c2ffc],.success-tag[data-v-924c2ffc]{color:hsla(0,0%,100%,.95);padding:3px 8px;font-size:11px;font-weight:500;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.fail-tag[data-v-924c2ffc]{background-color:rgba(220,53,69,.6);border:1px solid rgba(220,53,69,.7);border-radius:6px}.primary-tag[data-v-924c2ffc]{background-color:rgba(250,82,194,.6);color:hsla(0,0%,100%,.95);border:1px solid rgba(250,82,194,.7);padding:3px 8px;border-radius:6px;font-size:11px;font-weight:500;display:flex;align-items:center;height:auto;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.3);backdrop-filter:blur(4px)}.file-preview[data-v-924c2ffc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.file-icon[data-v-924c2ffc]{opacity:.6;font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.audio-icon[data-v-924c2ffc]{color:var(--el-color-primary);opacity:.8}.folder-icon-svg[data-v-924c2ffc]{font-size:clamp(40px,4vw,64px);transition:transform .4s ease}.file-icon-detail[data-v-924c2ffc]{height:40px}.audio-card-preview[data-v-924c2ffc]{cursor:pointer}.audio-preview[data-v-924c2ffc]{width:100%;max-width:300px;border-radius:8px}.card-bottom-overlay[data-v-924c2ffc]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.7));padding:clamp(15px,2.5vh,30px) clamp(6px,1vw,12px) clamp(5px,.8vh,10px);display:flex;flex-direction:column;gap:clamp(3px,.5vh,6px);z-index:10}.file-name-row[data-v-924c2ffc]{display:flex;align-items:center;justify-content:center}.file-name[data-v-924c2ffc]{color:#fff;font-size:clamp(10px,1.1vw,14px);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-shadow:0 1px 3px rgba(0,0,0,.5)}.action-bar[data-v-924c2ffc]{display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(4px);transition:all .25s cubic-bezier(.4,0,.2,1);pointer-events:none}.el-card:hover .action-bar[data-v-924c2ffc]{opacity:1;transform:translateY(0);pointer-events:auto}.action-bar-left[data-v-924c2ffc],.action-bar-right[data-v-924c2ffc]{display:flex;align-items:center;gap:clamp(3px,.4vw,6px)}.action-btn[data-v-924c2ffc]{width:clamp(24px,2.5vw,28px);height:clamp(24px,2.5vw,28px);border:none;border-radius:clamp(5px,.6vw,8px);background:hsla(0,0%,100%,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;font-size:clamp(11px,1.1vw,14px)}.action-btn[data-v-924c2ffc]:hover{background:hsla(0,0%,100%,.25);transform:scale(1.08)}.action-btn[data-v-924c2ffc]:active{transform:scale(.95)}.action-btn-danger[data-v-924c2ffc]:hover{background:rgba(239,68,68,.6)}@media (max-width:768px){.action-bar[data-v-924c2ffc]{display:none!important}}.list-view[data-v-924c2ffc]{display:flex;flex-direction:column;gap:0;background:var(--admin-dashboard-imgcard-bg-color);border-radius:12px;overflow-x:auto;overflow-y:visible;box-shadow:var(--admin-dashboard-imgcard-shadow);margin-top:15px}.list-header[data-v-924c2ffc]{background:var(--admin-dashboard-stats-bg);font-weight:600;font-size:13px;color:var(--el-text-color-secondary)}.list-header[data-v-924c2ffc],.list-item[data-v-924c2ffc]{display:grid;grid-template-columns:50px 60px minmax(180px,1fr) 130px 100px 120px 80px 100px 120px;padding:12px 20px;border-bottom:1px solid var(--el-border-color-lighter);min-width:-moz-fit-content;min-width:fit-content}.list-item[data-v-924c2ffc]{align-items:center;transition:background .2s ease}.list-item[data-v-924c2ffc]:last-child{border-bottom:none}.list-item[data-v-924c2ffc]:hover{background:var(--el-fill-color-light)}.list-col[data-v-924c2ffc]{display:flex;align-items:center}.list-col-checkbox[data-v-924c2ffc]{justify-content:center;min-width:40px}.list-col-preview[data-v-924c2ffc]{justify-content:center;cursor:pointer}.list-col-name[data-v-924c2ffc]{cursor:pointer;overflow:hidden;padding-right:16px;min-width:0}.filename-ellipsis[data-v-924c2ffc]{display:flex;max-width:100%;overflow:hidden;align-items:center}.filename-start[data-v-924c2ffc]{flex-shrink:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filename-end[data-v-924c2ffc]{flex-shrink:0;white-space:nowrap}.list-col-name[data-v-924c2ffc]:hover{color:#38bdf8}.list-col-channel[data-v-924c2ffc],.list-col-date[data-v-924c2ffc],.list-col-size[data-v-924c2ffc]{font-size:13px;color:var(--el-text-color-secondary)}.list-col-address[data-v-924c2ffc]{font-size:13px}.address-box[data-v-924c2ffc]{background:var(--el-fill-color-light);border:1px solid var(--el-border-color-lighter);border-radius:4px;padding:4px 8px;font-size:12px;font-family:Consolas,Monaco,monospace;color:var(--el-text-color-secondary);width:85px;max-width:100%;overflow-x:auto;overflow-y:hidden;white-space:nowrap}.address-box[data-v-924c2ffc]::-webkit-scrollbar{display:none}.address-box[data-v-924c2ffc]{scrollbar-width:none;-ms-overflow-style:none}.list-col-tags[data-v-924c2ffc]{display:flex;align-items:center;gap:4px;flex-wrap:nowrap;overflow:hidden}.custom-checkbox[data-v-924c2ffc]{width:18px;height:18px;border:2px solid var(--el-border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;background:transparent}.custom-checkbox[data-v-924c2ffc]:hover{border-color:#38bdf8}.custom-checkbox.checked[data-v-924c2ffc],.custom-checkbox.indeterminate[data-v-924c2ffc]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border-color:#38bdf8}.custom-checkbox .check-icon[data-v-924c2ffc]{font-size:10px;color:#fff}.color-tag[data-v-924c2ffc]{padding:2px 8px;border-radius:10px;font-size:11px;color:#fff;white-space:nowrap;max-width:60px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.2)}.color-tag-more[data-v-924c2ffc]{min-width:30px;text-align:center}.list-empty[data-v-924c2ffc]{color:var(--el-text-color-placeholder)}.list-col-actions[data-v-924c2ffc]{display:flex;gap:8px;justify-content:flex-end}.list-preview-img[data-v-924c2ffc]{width:40px;height:40px;-o-object-fit:cover;object-fit:cover;border-radius:6px}.list-folder-icon[data-v-924c2ffc]{font-size:28px;color:var(--el-color-primary)}.list-file-icon[data-v-924c2ffc]{font-size:24px;color:var(--el-text-color-secondary)}.list-action-btn[data-v-924c2ffc]{width:32px;height:32px;border:none;border-radius:8px;background:var(--el-fill-color);color:var(--el-text-color-regular);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.list-action-btn[data-v-924c2ffc]:hover{background:#38bdf8;color:#fff}.list-action-danger[data-v-924c2ffc]:hover{background:var(--el-color-danger)}@media (max-width:768px){.list-header[data-v-924c2ffc]{display:none}.list-item[data-v-924c2ffc]{grid-template-columns:28px 40px 1fr auto;padding:10px 8px;gap:8px}.list-col-address[data-v-924c2ffc],.list-col-channel[data-v-924c2ffc],.list-col-date[data-v-924c2ffc],.list-col-size[data-v-924c2ffc],.list-col-tags[data-v-924c2ffc]{display:none}.list-col-actions[data-v-924c2ffc]{gap:4px}.list-action-btn[data-v-924c2ffc]{width:28px;height:28px}.list-col-checkbox[data-v-924c2ffc]{width:24px;min-width:24px}.custom-checkbox[data-v-924c2ffc]{width:16px;height:16px}.custom-checkbox .check-icon[data-v-924c2ffc]{font-size:8px}.list-preview-img[data-v-924c2ffc]{width:36px;height:36px}.list-col-name[data-v-924c2ffc]{font-size:12px}}.pagination-container[data-v-924c2ffc]{display:flex;justify-content:center;align-items:center;margin-top:20px;padding-bottom:20px;gap:15px;position:relative}.pagination-center[data-v-924c2ffc]{display:flex;align-items:center;gap:10px}.pagination-container[data-v-924c2ffc] .el-pagination{--el-pagination-button-bg-color:var(--admin-dashboard-btn-bg-color);--el-pagination-hover-color:var(--admin-purple)}.pagination-container[data-v-924c2ffc] .el-pager li{background:var(--admin-dashboard-btn-bg-color);border-radius:10px;margin:0 4px;min-width:36px;height:36px;line-height:36px;font-weight:500;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-924c2ffc] .el-pager li:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-container[data-v-924c2ffc] .el-pager li.is-active{background:linear-gradient(135deg,#0ea5e9,#38bdf8)!important;color:#fff!important;border-radius:10px;box-shadow:var(--admin-dashboard-btn-shadow),0 4px 12px rgba(56,189,248,.3),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-924c2ffc] .el-pager li.is-active:hover{transform:translateY(-2px)!important;box-shadow:var(--admin-dashboard-btn-hover-shadow),0 6px 16px rgba(56,189,248,.4),inset 0 1px 0 hsla(0,0%,100%,.2)!important}.pagination-container[data-v-924c2ffc] .btn-next,.pagination-container[data-v-924c2ffc] .btn-prev{background:var(--admin-dashboard-btn-bg-color)!important;border-radius:10px!important;min-width:36px;height:36px;border:none;box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s cubic-bezier(.4,0,.2,1)}.pagination-container[data-v-924c2ffc] .btn-next:hover,.pagination-container[data-v-924c2ffc] .btn-prev:hover{color:#38bdf8;transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow)}.pagination-right[data-v-924c2ffc]{display:flex;align-items:center;gap:10px;position:absolute;right:0}.page-total[data-v-924c2ffc]{font-size:13px;color:var(--el-text-color-secondary);white-space:nowrap}.page-jump[data-v-924c2ffc]{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--el-text-color-secondary)}.page-jump .jump-input[data-v-924c2ffc]{width:50px}.page-jump .jump-input[data-v-924c2ffc] .el-input__wrapper{background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);border-radius:8px;padding:0 8px;height:28px}.page-jump .jump-input[data-v-924c2ffc] .el-input__inner{text-align:center;color:var(--el-text-color-primary);height:28px;line-height:28px}.page-jump .jump-btn[data-v-924c2ffc]{background:linear-gradient(135deg,#0ea5e9,#38bdf8);border:none;border-radius:8px;padding:0 12px;height:28px;font-size:12px;font-weight:600;color:#fff;box-shadow:0 2px 8px rgba(56,189,248,.3);transition:all .3s ease}.page-jump .jump-btn[data-v-924c2ffc]:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(56,189,248,.4)}@media (max-width:768px){.pagination-container[data-v-924c2ffc]{flex-direction:column;gap:12px;padding-bottom:15px}.pagination-center[data-v-924c2ffc]{order:0}.pagination-right[data-v-924c2ffc]{position:static;width:100%;justify-content:center;order:1}.page-jump .jump-input[data-v-924c2ffc]{width:45px}}.refresh-btn[data-v-924c2ffc]{cursor:pointer;background:var(--admin-dashboard-btn-bg-color);box-shadow:var(--admin-dashboard-btn-shadow);color:#38bdf8;border:none;border-radius:10px;width:36px;height:36px;min-width:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-924c2ffc]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-btn-hover-shadow);background:linear-gradient(135deg,#0ea5e9,#38bdf8);color:#fff}.load-more[data-v-924c2ffc]{cursor:pointer;background:linear-gradient(135deg,#0ea5e9,#38bdf8);box-shadow:0 4px 15px rgba(56,189,248,.3);color:#fff;border:none;border-radius:10px;height:36px;padding:0 16px;font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.load-more[data-v-924c2ffc]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(56,189,248,.5)}.el-checkbox[data-v-924c2ffc]{position:absolute;top:10px;right:10px;transform:scale(1.5);z-index:10}.video-preview[data-v-924c2ffc]{width:100%;height:100%;display:block;cursor:pointer;-o-object-fit:cover;object-fit:cover;transition:transform .4s ease}[data-v-924c2ffc] .description-item{word-break:break-all;word-wrap:break-word}.detail-actions[data-v-924c2ffc]{display:flex;justify-content:right;margin-bottom:10px}@media (max-width:768px){.detail-actions[data-v-924c2ffc]{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.detail-action[data-v-924c2ffc]{margin-left:0}}[data-v-924c2ffc] .btn-prev{left:8px}[data-v-924c2ffc] .btn-next,[data-v-924c2ffc] .btn-prev{border-radius:100%;position:fixed;top:50%;scale:1;color:var(--admin-dashboard-btn-color)}[data-v-924c2ffc] .btn-next{right:8px}@media (min-width:768px){[data-v-924c2ffc] .el-pagination.is-background .btn-next,[data-v-924c2ffc] .el-pagination.is-background .btn-prev{background-color:var(--admin-dashboard-btn-bg-color);backdrop-filter:blur(10px);box-shadow:var(--admin-dashboard-btn-shadow);transition:all .3s ease}[data-v-924c2ffc] .el-pagination.is-background .btn-next:hover,[data-v-924c2ffc] .el-pagination.is-background .btn-prev:hover{transform:translateY(-10%);box-shadow:var(--admin-dashboard-btn-hover-shadow)}}.question-icon[data-v-924c2ffc]{margin:0 3px}.breadcrumb[data-v-924c2ffc]{padding:8px 12px;background-color:var(--el-bg-color);border-radius:6px;font-size:.95em;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease}.breadcrumb[data-v-924c2ffc]:hover{transform:translateY(-1px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.breadcrumb-home-icon[data-v-924c2ffc]{font-size:14px;color:#38bdf8;transition:color .2s ease}.breadcrumb-home-icon[data-v-924c2ffc]:hover{color:var(--admin-purple)}.folder-card[data-v-924c2ffc]{cursor:pointer}.folder-card[data-v-924c2ffc]:hover{transform:scale(1.05)}.folder-icon[data-v-924c2ffc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;color:var(--el-color-primary)}.folder-overlay[data-v-924c2ffc]{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:end;justify-content:center;opacity:0;transition:opacity .3s ease;pointer-events:none}.folder-card:hover .folder-overlay[data-v-924c2ffc]{opacity:1}.folder-actions[data-v-924c2ffc]{position:absolute;bottom:15%;display:flex;pointer-events:auto}[data-v-924c2ffc] .el-breadcrumb__item{cursor:pointer}[data-v-924c2ffc] .el-breadcrumb__inner:hover{color:var(--el-color-primary)}.bottom-sheet-overlay[data-v-924c2ffc]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet[data-v-924c2ffc]{width:100%;max-width:100%;background:var(--bottom-sheet-bg,hsla(0,0%,100%,.95));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px 20px 0 0;max-height:70vh;overflow:hidden;box-shadow:0 -4px 30px rgba(0,0,0,.15);border-top:1px solid var(--bottom-sheet-border,rgba(0,0,0,.05))}html.dark .bottom-sheet[data-v-924c2ffc]{--bottom-sheet-bg:rgba(40,44,52,.95);--bottom-sheet-border:hsla(0,0%,100%,.1);box-shadow:0 -4px 30px rgba(0,0,0,.4)}.bottom-sheet-header[data-v-924c2ffc]{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--el-border-color-lighter)}.bottom-sheet-handle[data-v-924c2ffc]{width:40px;height:4px;background:var(--el-border-color);border-radius:2px}.bottom-sheet-title[data-v-924c2ffc]{font-size:16px;font-weight:600;color:var(--el-text-color-primary);text-align:center;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html.dark .bottom-sheet-title[data-v-924c2ffc]{color:#f0f0f0}.bottom-sheet-content[data-v-924c2ffc]{padding:12px 16px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}.bottom-sheet-item[data-v-924c2ffc]{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;cursor:pointer;transition:all .2s ease;background:var(--bottom-sheet-item-bg,rgba(0,0,0,.04));color:var(--el-text-color-primary)}html.dark .bottom-sheet-item[data-v-924c2ffc]{--bottom-sheet-item-bg:hsla(0,0%,100%,.08)}.bottom-sheet-item[data-v-924c2ffc]:active{transform:scale(.98);background:var(--bottom-sheet-item-active-bg,rgba(0,0,0,.08))}html.dark .bottom-sheet-item[data-v-924c2ffc]:active{--bottom-sheet-item-active-bg:hsla(0,0%,100%,.15)}.bottom-sheet-icon[data-v-924c2ffc]{font-size:20px;width:28px;text-align:center;color:#38bdf8}.bottom-sheet-danger .bottom-sheet-icon[data-v-924c2ffc],.bottom-sheet-danger[data-v-924c2ffc]{color:var(--el-color-danger)}.bottom-sheet-enter-active[data-v-924c2ffc]{transition:all .3s ease-out}.bottom-sheet-leave-active[data-v-924c2ffc]{transition:all .2s ease-in}.bottom-sheet-enter-active .bottom-sheet[data-v-924c2ffc]{animation:slideUp-924c2ffc .3s ease-out}.bottom-sheet-leave-active .bottom-sheet[data-v-924c2ffc]{animation:slideDown-924c2ffc .2s ease-in}.bottom-sheet-enter-from[data-v-924c2ffc],.bottom-sheet-leave-to[data-v-924c2ffc]{opacity:0}.bottom-sheet-enter-from .bottom-sheet[data-v-924c2ffc],.bottom-sheet-leave-to .bottom-sheet[data-v-924c2ffc]{transform:translateY(100%)}@keyframes slideUp-924c2ffc{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown-924c2ffc{0%{transform:translateY(0)}to{transform:translateY(100%)}}.mobile-directory-trigger[data-v-924c2ffc]{display:none;align-items:center;gap:6px;padding:6px 10px;background:var(--el-fill-color-light);border-radius:8px;border:1px solid var(--el-border-color-lighter);cursor:pointer;transition:all .2s ease}.mobile-directory-trigger[data-v-924c2ffc]:active{background:var(--el-fill-color)}.mobile-directory-icon[data-v-924c2ffc]{font-size:12px;color:var(--admin-purple)}.mobile-directory-path[data-v-924c2ffc]{font-size:12px;font-weight:500;color:var(--el-text-color-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-directory-arrow[data-v-924c2ffc]{font-size:8px;color:var(--el-text-color-secondary)}.desktop-only[data-v-924c2ffc]{display:block}@media (max-width:768px){.mobile-directory-trigger[data-v-924c2ffc]{display:flex}.desktop-only[data-v-924c2ffc]{display:none!important}.breadcrumb-container[data-v-924c2ffc]{padding:0;margin-left:0}}.mobile-drawer-overlay[data-v-924c2ffc]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.4);z-index:2000;backdrop-filter:blur(4px)}.mobile-drawer[data-v-924c2ffc]{position:absolute;top:22vh;left:8px;bottom:8px;width:280px;max-width:calc(85vw - 16px);background:var(--el-bg-color);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);display:flex;flex-direction:column;overflow:hidden}html.dark .mobile-drawer[data-v-924c2ffc]{background:rgba(40,40,45,.98);box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3)}.mobile-drawer-header[data-v-924c2ffc]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:linear-gradient(135deg,rgba(167,139,250,.12),rgba(139,92,246,.08));border-bottom:1px solid var(--el-border-color-lighter)}.mobile-drawer-title[data-v-924c2ffc]{font-size:15px;font-weight:600;color:var(--admin-purple);display:flex;align-items:center;gap:8px}.mobile-drawer-title[data-v-924c2ffc]:before{content:"";display:inline-block;width:4px;height:16px;background:linear-gradient(180deg,var(--admin-purple) 0,rgba(139,92,246,.5) 100%);border-radius:2px}.mobile-drawer-close[data-v-924c2ffc]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--el-text-color-secondary);cursor:pointer;border-radius:8px;transition:all .2s ease;background:transparent}.mobile-drawer-close[data-v-924c2ffc]:active{background:var(--el-fill-color);color:var(--el-text-color-primary)}.mobile-drawer-content[data-v-924c2ffc]{flex:1;overflow-y:auto;padding:8px}.mobile-drawer-item[data-v-924c2ffc]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:2px 0;cursor:pointer;transition:all .2s ease;color:var(--el-text-color-primary);border-radius:10px;font-size:14px}.mobile-drawer-item[data-v-924c2ffc]:active{background:var(--el-fill-color-light);transform:scale(.98)}.mobile-drawer-item.active[data-v-924c2ffc]{background:linear-gradient(135deg,rgba(167,139,250,.2),rgba(139,92,246,.12));color:var(--admin-purple);font-weight:600}.mobile-drawer-item-icon[data-v-924c2ffc]{font-size:18px;width:24px;text-align:center;opacity:.7}.mobile-drawer-item.active .mobile-drawer-item-icon[data-v-924c2ffc]{opacity:1;color:var(--admin-purple)}.mobile-drawer-back[data-v-924c2ffc]{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 8px;border-radius:10px;background:var(--el-fill-color-lighter);cursor:pointer;transition:all .2s ease;color:var(--el-text-color-secondary);font-size:14px}.mobile-drawer-back[data-v-924c2ffc]:active{background:var(--el-fill-color);color:var(--el-text-color-primary);transform:scale(.98)}.drawer-slide-enter-active[data-v-924c2ffc]{transition:opacity .3s ease}.drawer-slide-leave-active[data-v-924c2ffc]{transition:opacity .2s ease}.drawer-slide-enter-active .mobile-drawer[data-v-924c2ffc]{animation:slideInLeft-924c2ffc .3s ease-out}.drawer-slide-leave-active .mobile-drawer[data-v-924c2ffc]{animation:slideOutLeft-924c2ffc .2s ease-in}.drawer-slide-enter-from[data-v-924c2ffc],.drawer-slide-leave-to[data-v-924c2ffc]{opacity:0}@keyframes slideInLeft-924c2ffc{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideOutLeft-924c2ffc{0%{transform:translateX(0)}to{transform:translateX(-100%)}} \ No newline at end of file diff --git a/css/900.0729d2d2.css.gz b/css/900.0729d2d2.css.gz deleted file mode 100644 index f23bde8..0000000 Binary files a/css/900.0729d2d2.css.gz and /dev/null differ diff --git a/css/917.8529ad1e.css b/css/917.8529ad1e.css deleted file mode 100644 index f455ee4..0000000 --- a/css/917.8529ad1e.css +++ /dev/null @@ -1 +0,0 @@ -.blocked-container[data-v-76cc7d3a]{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:var(--bg-color,linear-gradient(135deg,#ff6b6b 0,#ee5a24 100%));color:var(--text-color,#333)}.background-wrapper[data-v-76cc7d3a]{position:absolute;top:0;left:0;width:100%;height:100%;z-index:-1}.blocked-content[data-v-76cc7d3a]{text-align:center;z-index:10;max-width:600px;padding:2rem;position:relative;background:hsla(0,0%,100%,.1);backdrop-filter:blur(20px);border-radius:20px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1)}.back-button-wrapper[data-v-76cc7d3a]{position:absolute;top:-25px;right:-25px;z-index:15}.back-button[data-v-76cc7d3a]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));border:none;color:var(--toolbar-button-text-color,#333);box-shadow:0 4px 20px rgba(0,0,0,.15);transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button[data-v-76cc7d3a]:hover{transform:translateY(-2px) scale(1.1);box-shadow:0 6px 25px rgba(0,0,0,.2);background:var(--primary-color,#409eff);color:#fff}.status-animation[data-v-76cc7d3a]{margin-bottom:2rem;position:relative}.status-icon[data-v-76cc7d3a]{position:relative;display:inline-block;margin-bottom:1rem}.ban-icon[data-v-76cc7d3a]{font-size:4rem;color:#f56c6c;animation:shake-76cc7d3a 2s ease-in-out infinite;filter:drop-shadow(0 0 20px rgba(245,108,108,.3))}.status-badge[data-v-76cc7d3a]{position:absolute;bottom:-5px;right:-5px;background:#e6a23c;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.2)}.exclamation-icon[data-v-76cc7d3a]{color:#fff;font-size:.9rem;animation:bounce-76cc7d3a 1.5s ease-in-out infinite}.status-info[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out .5s both}.status-title[data-v-76cc7d3a]{font-size:2rem;font-weight:700;margin-bottom:1rem;color:var(--text-color,#333);background:var(--not-found-title-text-color,linear-gradient(45deg,#409eff,#67c23a));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.status-description[data-v-76cc7d3a]{font-size:1.1rem;line-height:1.6;margin-bottom:1rem;opacity:.9;color:var(--text-color,#333)}.status-description-en[data-v-76cc7d3a]{font-size:.95rem;line-height:1.5;margin-bottom:2rem;opacity:.7;color:var(--text-color-secondary,#666);font-style:italic}.status-actions[data-v-76cc7d3a]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-bottom:2rem}.action-btn[data-v-76cc7d3a]{border-radius:25px;padding:12px 24px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 15px rgba(0,0,0,.1);border:none;min-width:140px}.primary-btn[data-v-76cc7d3a]{background:var(--primary-color,#409eff);color:#fff}.secondary-btn[data-v-76cc7d3a]{background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.9));color:var(--text-color,#333)}.action-btn[data-v-76cc7d3a]:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.15)}.btn-icon[data-v-76cc7d3a]{margin-right:8px}.help-info[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out 1s both;margin-bottom:1.5rem}.help-text[data-v-76cc7d3a]{margin-bottom:1rem;opacity:.7;font-size:.9rem;color:var(--text-color-secondary,#666)}.quick-links[data-v-76cc7d3a]{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.quick-link[data-v-76cc7d3a]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:500;padding:.5rem 1rem;border-radius:15px;background:var(--toolbar-button-bg-color,hsla(0,0%,100%,.8));backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid rgba(64,158,255,.2);font-size:.85rem;display:flex;align-items:center;gap:.5rem}.quick-link[data-v-76cc7d3a]:hover{background:var(--primary-color,#409eff);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(64,158,255,.3)}.powered-by[data-v-76cc7d3a]{animation:fadeInUp-76cc7d3a 1s ease-out 1.2s both;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.2);opacity:.8}.powered-by p[data-v-76cc7d3a]{margin:0;font-size:.85rem;color:var(--text-color-secondary,#666)}.project-link[data-v-76cc7d3a]{color:var(--primary-color,#409eff);text-decoration:none;font-weight:600;transition:all .3s ease}.project-link[data-v-76cc7d3a]:hover{color:#67c23a;text-shadow:0 0 10px rgba(103,194,58,.3)}.floating-elements[data-v-76cc7d3a]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.floating-shape[data-v-76cc7d3a]{position:absolute;background:hsla(0,87%,69%,.1);border-radius:50%;animation:floatShapes-76cc7d3a 8s ease-in-out infinite}.shape-1[data-v-76cc7d3a]{width:60px;height:60px;top:15%;left:10%;animation-delay:0s}.shape-2[data-v-76cc7d3a]{width:80px;height:80px;top:60%;right:15%;animation-delay:-2s;background:rgba(230,162,60,.1)}.shape-3[data-v-76cc7d3a]{width:40px;height:40px;bottom:25%;left:20%;animation-delay:-4s}.shape-4[data-v-76cc7d3a]{width:70px;height:70px;top:25%;right:25%;animation-delay:-1s;background:hsla(0,100%,71%,.1)}.shape-5[data-v-76cc7d3a]{width:50px;height:50px;bottom:15%;right:10%;animation-delay:-3s;background:rgba(238,90,36,.1)}@keyframes shake-76cc7d3a{0%,to{transform:rotate(0deg)}10%{transform:rotate(-3deg)}20%{transform:rotate(3deg)}30%{transform:rotate(-3deg)}40%{transform:rotate(3deg)}50%{transform:rotate(0deg)}}@keyframes bounce-76cc7d3a{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-5px)}60%{transform:translateY(-3px)}}@keyframes floatShapes-76cc7d3a{0%,to{transform:translateY(0) rotate(0deg);opacity:.6}50%{transform:translateY(-25px) rotate(180deg);opacity:.3}}@keyframes fadeInUp-76cc7d3a{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.blocked-content[data-v-76cc7d3a]{padding:1.5rem;margin:1rem;max-width:calc(100% - 2rem)}.back-button-wrapper[data-v-76cc7d3a]{top:-20px;right:-20px}.ban-icon[data-v-76cc7d3a]{font-size:3rem}.status-title[data-v-76cc7d3a]{font-size:1.5rem}.status-description[data-v-76cc7d3a]{font-size:1rem}.status-description-en[data-v-76cc7d3a]{font-size:.9rem}.status-actions[data-v-76cc7d3a]{flex-direction:column;align-items:center}.action-btn[data-v-76cc7d3a]{width:200px}.quick-links[data-v-76cc7d3a]{flex-direction:column;gap:.5rem;align-items:center}.quick-link[data-v-76cc7d3a]{width:-moz-fit-content;width:fit-content;min-width:120px;justify-content:center}}@media (max-width:480px){.blocked-content[data-v-76cc7d3a]{padding:1rem;margin:.5rem;max-width:calc(100% - 1rem)}.status-title[data-v-76cc7d3a]{font-size:1.3rem}.status-description[data-v-76cc7d3a]{font-size:.95rem}.status-description-en[data-v-76cc7d3a]{font-size:.85rem}.ban-icon[data-v-76cc7d3a]{font-size:2.5rem}}@media (prefers-color-scheme:dark){.blocked-container[data-v-76cc7d3a]{background:var(--bg-color,linear-gradient(135deg,#c0392b 0,#8e44ad 100%));color:var(--text-color,#e4e7ed)}.blocked-content[data-v-76cc7d3a]{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1)}.status-description[data-v-76cc7d3a],.status-title[data-v-76cc7d3a]{color:var(--text-color,#e4e7ed)}.help-text[data-v-76cc7d3a],.powered-by p[data-v-76cc7d3a],.status-description-en[data-v-76cc7d3a]{color:var(--text-color-secondary,#909399)}} \ No newline at end of file diff --git a/css/917.8529ad1e.css.gz b/css/917.8529ad1e.css.gz deleted file mode 100644 index 553a3a5..0000000 Binary files a/css/917.8529ad1e.css.gz and /dev/null differ diff --git a/css/957.c1cd087c.css b/css/957.c1cd087c.css deleted file mode 100644 index 88d9019..0000000 --- a/css/957.c1cd087c.css +++ /dev/null @@ -1 +0,0 @@ -.sidebar-container[data-v-2bd8175a]{display:flex;flex-direction:column;position:fixed;top:50%;left:8px;transform:translateY(-50%);z-index:2001;width:150px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-radius:16px;box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:width .3s ease,box-shadow .3s ease;overflow:hidden}.sidebar-container.is-collapsed[data-v-2bd8175a]{width:56px}html.dark .sidebar-container[data-v-2bd8175a]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}.sidebar-container[data-v-2bd8175a]:hover{box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5)}html.dark .sidebar-container[data-v-2bd8175a]:hover{box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.menu-list[data-v-2bd8175a]{padding:8px}.menu-item[data-v-2bd8175a]{display:flex;align-items:center;padding:12px;height:42px;box-sizing:border-box;border-radius:10px;cursor:pointer;transition:background .2s ease,color .2s ease,padding .25s ease;color:var(--admin-container-color,#333);gap:0;overflow:hidden}.sidebar-container.is-collapsed .menu-item[data-v-2bd8175a]{padding:12px 0}.menu-item[data-v-2bd8175a]:hover{background:rgba(0,0,0,.06)}html.dark .menu-item[data-v-2bd8175a]:hover{background:hsla(0,0%,100%,.1)}.menu-item.is-active[data-v-2bd8175a]{background:linear-gradient(135deg,rgba(64,158,255,.15),rgba(56,189,248,.25));color:#409eff}html.dark .menu-item.is-active[data-v-2bd8175a]{background:linear-gradient(135deg,rgba(64,158,255,.2),rgba(56,189,248,.35))}.menu-icon[data-v-2bd8175a]{width:32px;min-width:32px;font-size:16px;flex-shrink:0;text-align:center}.menu-text[data-v-2bd8175a]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;opacity:1;max-width:100px;transition:opacity .2s ease .05s,max-width .25s ease}.sidebar-container.is-collapsed .menu-text[data-v-2bd8175a]{opacity:0;max-width:0;transition:opacity .1s ease,max-width .2s ease}.toggle-button[data-v-2bd8175a]{padding:12px;text-align:center;cursor:pointer;border-top:1px solid rgba(0,0,0,.08);transition:all .2s ease;color:var(--admin-container-color,#333)}html.dark .toggle-button[data-v-2bd8175a]{border-top:1px solid hsla(0,0%,100%,.08)}.toggle-button[data-v-2bd8175a]:hover{background:rgba(0,0,0,.04)}html.dark .toggle-button[data-v-2bd8175a]:hover{background:hsla(0,0%,100%,.06)}@media (max-width:768px){.sidebar-container[data-v-2bd8175a]{left:4px;width:140px}.sidebar-container.is-collapsed[data-v-2bd8175a]{width:50px}}.status-panel[data-v-6b196228]{padding:20px;background:transparent;min-height:100vh}.overview-cards[data-v-6b196228]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-bottom:30px}.overview-card[data-v-6b196228]{background:var(--admin-dashborad-stats-bg-color);border-radius:16px;padding:24px;display:flex;align-items:center;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease;border:1px solid hsla(0,0%,100%,.2);cursor:pointer}.overview-card[data-v-6b196228]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-stats-hover-shadow);background:var(--admin-dashborad-stats-hover-bg-color)}.card-icon[data-v-6b196228]{width:60px;height:60px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;margin-right:20px;background:linear-gradient(135deg,#60a5fa,#93c5fd);color:#fff}.card-content[data-v-6b196228]{flex:1}.card-title[data-v-6b196228]{font-size:14px;color:#666;margin-bottom:8px;font-weight:500}.card-value[data-v-6b196228]{font-size:28px;font-weight:700;color:var(--admin-container-color);line-height:1}.card-subtitle[data-v-6b196228]{font-size:11px;color:#999;margin-top:4px;opacity:.8}.charts-section[data-v-6b196228]{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px;margin-bottom:30px}.chart-card[data-v-6b196228]{background:var(--admin-dashborad-stats-bg-color);border-radius:16px;padding:24px;box-shadow:var(--admin-dashboard-stats-shadow);transition:all .3s ease;border:1px solid hsla(0,0%,100%,.2)}.chart-card[data-v-6b196228]:hover{box-shadow:var(--admin-dashboard-stats-hover-shadow)}.chart-card[data-v-6b196228],.chart-content[data-v-6b196228],.pie-chart-container[data-v-6b196228],.pie-chart-wrapper[data-v-6b196228]{overflow:visible}.chart-header[data-v-6b196228]{display:flex;gap:8px;align-items:center;margin-bottom:20px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.chart-header .fa-icon[data-v-6b196228]{margin-right:10px;color:var(--admin-purple)}.chart-content[data-v-6b196228]{min-height:160px;padding:10px;margin:-10px}.empty-state[data-v-6b196228]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:160px;color:#999;font-size:14px}.empty-state .fa-icon[data-v-6b196228]{font-size:32px;margin-bottom:10px}.stats-list[data-v-6b196228]{display:flex;flex-direction:column;gap:16px}.stats-item[data-v-6b196228]{display:flex;align-items:center;gap:12px}.stats-label[data-v-6b196228]{min-width:80px;font-size:13px;color:#666;font-weight:500}.stats-bar[data-v-6b196228]{flex:1;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}.stats-fill[data-v-6b196228]{height:100%;background:linear-gradient(90deg,var(--admin-purple),#e1bee7);border-radius:4px;transition:width .6s ease}.type-fill[data-v-6b196228]{background:linear-gradient(90deg,#4caf50,#81c784)}.stats-value[data-v-6b196228]{min-width:50px;text-align:right;font-size:13px;font-weight:600;color:var(--admin-container-color)}.pie-chart-container[data-v-6b196228]{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:center}.pie-chart-wrapper[data-v-6b196228]{position:relative;width:160px;height:160px;flex-shrink:0;padding:10px;margin:-10px;overflow:visible}.chart-center-text[data-v-6b196228]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none}.center-value[data-v-6b196228]{font-size:22px;font-weight:700;color:var(--admin-container-color);line-height:1.2}.center-label[data-v-6b196228]{font-size:11px;color:#888;margin-top:2px}.chart-legend[data-v-6b196228]{display:flex;flex-direction:column;gap:10px;flex:1;min-width:180px}.legend-item[data-v-6b196228]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:rgba(0,0,0,.03);border-radius:8px;transition:all .2s ease}.legend-item[data-v-6b196228]:hover{background:rgba(0,0,0,.06);transform:translateX(4px)}html.dark .legend-item[data-v-6b196228]{background:hsla(0,0%,100%,.05)}html.dark .legend-item[data-v-6b196228]:hover{background:hsla(0,0%,100%,.1)}.legend-color[data-v-6b196228]{width:12px;height:12px;border-radius:3px;flex-shrink:0}.legend-label[data-v-6b196228]{flex:1;font-size:13px;color:var(--admin-container-color);font-weight:500}.legend-value[data-v-6b196228]{font-size:13px;font-weight:600;color:var(--admin-container-color);min-width:50px;text-align:right}.legend-percent[data-v-6b196228]{font-size:12px;color:#888;min-width:40px;text-align:right}.actions-section[data-v-6b196228]{margin-bottom:30px}.action-card[data-v-6b196228]{background:var(--admin-dashborad-stats-bg-color);border-radius:16px;padding:24px;box-shadow:var(--admin-dashboard-stats-shadow);border:1px solid hsla(0,0%,100%,.2)}.action-header[data-v-6b196228]{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:16px;font-weight:600;color:var(--admin-container-color)}.action-header .fa-icon[data-v-6b196228]{margin-right:10px;color:var(--admin-purple)}.action-content[data-v-6b196228]{display:flex;justify-content:center;padding:20px 0}.action-buttons[data-v-6b196228]{display:flex;gap:20px;flex-wrap:wrap;justify-content:center;align-items:center;width:100%}.action-btn[data-v-6b196228]{border:none;border-radius:12px;padding:12px 24px;margin-left:0;font-weight:600;transition:all .3s ease;min-width:140px;width:140px;height:48px}@media (max-width:768px){.action-btn[data-v-6b196228]{flex:1;width:auto;min-width:0;height:auto}}.action-btn[data-v-6b196228]:hover{transform:translateY(-2px)}.action-btn .fa-icon[data-v-6b196228]{margin-right:8px}.rebuild-btn[data-v-6b196228]{background:linear-gradient(135deg,var(--admin-purple),#e1bee7)}.rebuild-btn[data-v-6b196228]:hover{box-shadow:0 6px 16px rgba(179,157,219,.4)}.backup-btn[data-v-6b196228]{background:linear-gradient(135deg,#4caf50,#81c784)}.backup-btn[data-v-6b196228]:hover{box-shadow:0 6px 16px rgba(76,175,80,.4)}.restore-btn[data-v-6b196228]{background:linear-gradient(135deg,#ff9800,#ffb74d)}.restore-btn[data-v-6b196228]:hover{box-shadow:0 6px 16px rgba(255,152,0,.4)}.restore-section[data-v-6b196228]{display:inline-block}@media (max-width:768px){.action-buttons>.el-tooltip[data-v-6b196228],.action-buttons>.restore-section[data-v-6b196228],.restore-section[data-v-6b196228]{flex:1;width:100%}.action-btn[data-v-6b196228]{width:100%!important;padding:10px 20px!important;box-sizing:border-box}}.file-info-section[data-v-6b196228]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;align-items:stretch}.file-info-card[data-v-6b196228]{position:relative;background:var(--admin-dashborad-stats-bg-color);border-radius:16px;box-shadow:var(--admin-dashboard-stats-shadow);border:1px solid hsla(0,0%,100%,.2);transition:all .3s ease;height:300px;overflow:hidden;cursor:pointer}.card-bg-media[data-v-6b196228]{position:absolute;top:0;left:0;transition:transform .5s ease;display:block}.card-bg-media[data-v-6b196228],.card-bg-media[data-v-6b196228] .el-image__inner{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.card-bg-media[data-v-6b196228] .el-image__wrapper{width:100%;height:100%}.card-bg-fallback[data-v-6b196228]{position:absolute;top:0;left:0;width:100%;height:100%;background:var(--admin-dashborad-stats-bg-color);display:flex;align-items:center;justify-content:center}.fallback-icon[data-v-6b196228]{font-size:80px;color:var(--el-text-color-placeholder);opacity:.3}.file-card-header[data-v-6b196228]{position:absolute;top:0;left:0;right:0;display:flex;gap:8px;align-items:center;padding:12px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(180deg,rgba(0,0,0,.6),transparent);z-index:2}.file-card-header .fa-icon[data-v-6b196228]{color:#60a5fa}.file-card-header.warning .fa-icon[data-v-6b196228]{color:#f59e0b}.info-card-footer[data-v-6b196228]{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(0deg,rgba(0,0,0,.7),transparent);text-align:center;z-index:2}.info-card-footer .file-name[data-v-6b196228]{font-size:14px;color:#fff;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.5)}.info-card-footer .file-meta[data-v-6b196228]{font-size:12px;color:hsla(0,0%,100%,.8);text-shadow:0 1px 2px rgba(0,0,0,.5)}@media (min-width:1200px){.file-info-card[data-v-6b196228]{height:400px}}@media (min-width:1600px){.file-info-card[data-v-6b196228]{height:450px}}.file-info-card[data-v-6b196228]:hover{transform:translateY(-2px);box-shadow:var(--admin-dashboard-stats-hover-shadow)}.file-info-card:hover .card-bg-media[data-v-6b196228]{transform:scale(1.05)}@media (max-width:768px){.status-panel[data-v-6b196228]{padding:15px}.charts-section[data-v-6b196228],.file-info-section[data-v-6b196228],.overview-cards[data-v-6b196228]{grid-template-columns:1fr;gap:15px}.card-icon[data-v-6b196228]{width:50px;height:50px;font-size:20px;margin-right:15px}.card-value[data-v-6b196228]{font-size:24px}.action-buttons[data-v-6b196228]{flex-direction:column;gap:12px}.action-btn[data-v-6b196228]{width:100%;min-width:unset}}.stats-fill[data-v-6b196228]{animation:fillAnimation-6b196228 1s ease-out}@keyframes fillAnimation-6b196228{0%{width:0}}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-modal-dialog.is-penetrable{pointer-events:none}.el-modal-dialog.is-penetrable .el-dialog{pointer-events:auto}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;padding-right:0;text-align:left;width:fit-content}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon,.el-input-number{display:inline-flex}.el-input-number{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-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%}}.custom-select[data-v-6c59d112]{position:relative}.custom-select-trigger[data-v-6c59d112]{display:flex;align-items:center;justify-content:space-between;height:32px;padding:0 12px;background:var(--el-bg-color);border:1px solid var(--el-border-color);border-radius:8px;cursor:pointer;transition:all .2s ease;box-sizing:border-box}.custom-select-trigger[data-v-6c59d112]:hover{border-color:var(--el-color-primary-light-5)}.custom-select.is-open .custom-select-trigger[data-v-6c59d112]{border-color:var(--el-color-primary)}.custom-select-value[data-v-6c59d112]{font-size:14px;color:var(--el-text-color-regular);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select-arrow[data-v-6c59d112],.custom-select-value.is-placeholder[data-v-6c59d112]{color:var(--el-text-color-placeholder)}.custom-select-arrow[data-v-6c59d112]{font-size:12px;transition:transform .2s ease;flex-shrink:0;margin-left:8px}.custom-select.is-open .custom-select-arrow[data-v-6c59d112]{transform:rotate(180deg)}.custom-select-dropdown[data-v-6c59d112]{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);border-radius:8px;box-shadow:var(--el-box-shadow-light);z-index:2000;overflow:hidden}.custom-select-option[data-v-6c59d112]{display:flex;align-items:center;gap:8px;height:34px;padding:0 12px;font-size:14px;color:var(--el-text-color-regular);cursor:pointer;transition:background .2s ease}.custom-select-option[data-v-6c59d112]:hover{background:var(--el-fill-color-light)}.custom-select-option.is-selected[data-v-6c59d112]{color:var(--el-color-primary);font-weight:500}.option-icon[data-v-6c59d112]{width:16px;height:16px;flex-shrink:0}.dropdown-fade-enter-active[data-v-6c59d112],.dropdown-fade-leave-active[data-v-6c59d112]{transition:opacity .2s ease,transform .2s ease}.dropdown-fade-enter-from[data-v-6c59d112],.dropdown-fade-leave-to[data-v-6c59d112]{opacity:0;transform:translateY(-8px)}.upload-settings[data-v-04f7e1dc]{padding:20px;min-height:500px;overflow-x:hidden}.page-header[data-v-04f7e1dc]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:12px}.first-title[data-v-04f7e1dc]{display:flex;align-items:center;gap:8px;margin:0;font-size:20px;font-weight:600}.help-icon[data-v-04f7e1dc]{cursor:pointer;color:var(--el-text-color-secondary);font-size:14px}.add-btn[data-v-04f7e1dc]{border-radius:8px}.header-actions[data-v-04f7e1dc]{display:flex;gap:12px}.header-actions[data-v-04f7e1dc] .el-button{border-radius:8px}.channel-group[data-v-04f7e1dc]{margin-bottom:32px;background:var(--el-bg-color);border-radius:12px;border:1px solid var(--el-border-color-lighter);overflow:hidden}.group-header[data-v-04f7e1dc]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--el-fill-color-lighter);border-bottom:1px solid var(--el-border-color-lighter)}.group-title[data-v-04f7e1dc]{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--el-text-color-primary)}.group-icon[data-v-04f7e1dc]{font-size:18px;color:var(--el-color-primary)}.channel-count[data-v-04f7e1dc]{font-size:12px}.load-balance-switch[data-v-04f7e1dc]{display:flex;align-items:center;gap:8px}.switch-label[data-v-04f7e1dc]{font-size:13px;color:var(--el-text-color-secondary)}.channel-cards[data-v-04f7e1dc]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:20px}.channel-card[data-v-04f7e1dc]{background:var(--el-bg-color);border-radius:10px;border:1px solid var(--el-border-color-extra-light);border-left:3px solid var(--el-border-color-light);transition:all .25s ease;overflow:hidden;position:relative;display:flex;flex-direction:column}.card-glow[data-v-04f7e1dc]{position:absolute;width:150px;height:150px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);transition:opacity .3s ease;z-index:0;background:radial-gradient(circle,rgba(56,189,248,.15) 0,transparent 70%)}.channel-card.telegram .card-glow[data-v-04f7e1dc]{background:radial-gradient(circle,rgba(84,169,235,.2) 0,transparent 70%)}.channel-card.cfr2 .card-glow[data-v-04f7e1dc]{background:radial-gradient(circle,rgba(246,130,31,.2) 0,transparent 70%)}.channel-card.s3 .card-glow[data-v-04f7e1dc]{background:radial-gradient(circle,rgba(86,154,49,.2) 0,transparent 70%)}.channel-card.discord .card-glow[data-v-04f7e1dc]{background:radial-gradient(circle,rgba(88,101,242,.2) 0,transparent 70%)}.channel-card.huggingface .card-glow[data-v-04f7e1dc]{background:radial-gradient(circle,rgba(255,210,30,.2) 0,transparent 70%)}.channel-card[data-v-04f7e1dc]:hover{border-color:var(--el-border-color-light);box-shadow:0 4px 12px rgba(0,0,0,.08)}.channel-card.disabled[data-v-04f7e1dc]{opacity:.6;background:var(--el-fill-color-lighter)}.channel-card.telegram[data-v-04f7e1dc]{border-left-color:#54a9eb}.channel-card.cfr2[data-v-04f7e1dc]{border-left-color:#f6821f}.channel-card.s3[data-v-04f7e1dc]{border-left-color:#569a31}.channel-card.discord[data-v-04f7e1dc]{border-left-color:#5865f2}.channel-card.huggingface[data-v-04f7e1dc]{border-left-color:#ffd21e}.channel-card.fixed[data-v-04f7e1dc]{border-left-width:3px;border-left-style:dashed}.card-header[data-v-04f7e1dc]{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--el-fill-color-lighter);border-bottom:1px solid var(--el-border-color-lighter)}.card-title[data-v-04f7e1dc]{display:flex;align-items:center;gap:8px}.channel-name[data-v-04f7e1dc]{font-weight:600;font-size:14px;color:var(--el-text-color-primary)}.card-body[data-v-04f7e1dc]{padding:14px 16px;min-height:60px;text-align:left}.card-info[data-v-04f7e1dc]{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;overflow:hidden}.info-item[data-v-04f7e1dc]{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--el-text-color-secondary);min-width:0;width:100%;max-width:100%}.info-text[data-v-04f7e1dc]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.info-icon[data-v-04f7e1dc]{width:14px;flex-shrink:0;color:var(--el-text-color-placeholder)}.quota-mini[data-v-04f7e1dc]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--el-border-color-lighter)}.quota-mini[data-v-04f7e1dc] .el-progress{margin-bottom:4px}.quota-text[data-v-04f7e1dc]{font-size:11px;color:var(--el-text-color-secondary)}.card-actions[data-v-04f7e1dc]{display:flex;justify-content:flex-end;gap:4px;padding:10px 16px;border-top:1px solid var(--el-border-color-lighter);background:var(--el-fill-color-blank);margin-top:auto}.empty-tip[data-v-04f7e1dc]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;color:var(--el-text-color-placeholder);gap:12px}.empty-icon[data-v-04f7e1dc]{font-size:32px}.channel-warning[data-v-04f7e1dc]{margin:0 20px 16px;padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning)}.select-option-icon[data-v-04f7e1dc]{width:18px;margin-right:8px;text-align:center}.form-tip[data-v-04f7e1dc]{margin-left:12px;font-size:12px;color:var(--el-text-color-secondary)}.form-warning[data-v-04f7e1dc]{padding:10px 14px;font-size:13px;color:var(--el-color-warning);background:var(--el-color-warning-light-9);border-radius:6px;border-left:3px solid var(--el-color-warning);margin-top:8px}.quota-status[data-v-04f7e1dc]{width:100%}.quota-status[data-v-04f7e1dc] .el-progress{margin-bottom:8px}.quota-info[data-v-04f7e1dc]{font-size:13px;color:var(--el-text-color-secondary);padding:8px 12px;background:var(--el-fill-color);border-radius:6px}.quota-info.quota-warning[data-v-04f7e1dc]{color:var(--el-color-danger);background:var(--el-color-danger-light-9);font-weight:500}.quota-label[data-v-04f7e1dc]{display:inline-flex;align-items:center;gap:4px}.refresh-btn[data-v-04f7e1dc]{padding:0!important;margin:0!important;height:auto!important;min-height:auto!important;vertical-align:middle}.refresh-btn .fa-spin[data-v-04f7e1dc]{animation:fa-spin-04f7e1dc 1s linear infinite}@keyframes fa-spin-04f7e1dc{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.upload-settings[data-v-04f7e1dc]{padding:12px}.page-header[data-v-04f7e1dc]{flex-direction:column;align-items:flex-start}.channel-cards[data-v-04f7e1dc]{grid-template-columns:1fr;padding:12px}.group-header[data-v-04f7e1dc]{flex-direction:column;gap:12px;align-items:flex-start}}[data-v-04f7e1dc] .channel-dialog{width:600px!important;max-width:90vw!important}@media (max-width:768px){[data-v-04f7e1dc] .channel-dialog{width:90vw!important}}.el-checkbox-group{font-size:0;line-height:0}.security-settings[data-v-5ba1ffae]{padding:20px;min-height:500px}.first-settings[data-v-5ba1ffae]{margin-bottom:40px}.first-title[data-v-5ba1ffae]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-5ba1ffae]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-5ba1ffae] .el-form{padding:16px 20px;background:var(--el-fill-color-lighter);border-radius:12px;border:1px solid var(--el-border-color-lighter);margin-bottom:20px}.first-settings[data-v-5ba1ffae] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-5ba1ffae] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-5ba1ffae] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-5ba1ffae] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-5ba1ffae] .el-input,.first-settings[data-v-5ba1ffae] .el-select{width:100%}.first-settings[data-v-5ba1ffae] .el-switch{--el-switch-on-color:var(--el-color-primary)}.actions[data-v-5ba1ffae]{margin-top:20px;display:flex;justify-content:flex-end;gap:12px}.actions[data-v-5ba1ffae] .el-button{border-radius:8px;padding:10px 20px}.token-title[data-v-5ba1ffae]{display:flex;align-items:center;justify-content:space-between}.token-actions[data-v-5ba1ffae]{margin-left:5px}.token-table-container[data-v-5ba1ffae]{display:flex;justify-content:center;margin-top:20px;width:100%;overflow:hidden}.token-table[data-v-5ba1ffae]{width:100%;border-radius:12px!important;overflow:hidden;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.token-table[data-v-5ba1ffae] .el-table__header-wrapper{border-radius:12px 12px 0 0}.token-table[data-v-5ba1ffae] .el-table__body-wrapper{border-radius:0 0 12px 12px}.token-table[data-v-5ba1ffae] .el-table{border-radius:12px}.token-table[data-v-5ba1ffae] .el-table__header{background-color:#f8f9fa}.token-table[data-v-5ba1ffae] .el-table th{background-color:#f8f9fa!important;border-bottom:1px solid #ebeef5;text-align:center}.token-table[data-v-5ba1ffae] .el-table td{border-bottom:1px solid #ebeef5}.token-table[data-v-5ba1ffae] .el-table__row:last-child td{border-bottom:none}.table-cell-content[data-v-5ba1ffae]{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px;padding:8px 4px;min-height:40px}.action-buttons[data-v-5ba1ffae]{gap:8px}.action-button[data-v-5ba1ffae]{margin-left:0}.permission-tag[data-v-5ba1ffae]{margin:2px!important}.token-display[data-v-5ba1ffae]{font-family:Courier New,monospace;background-color:var(--text-bg-color);padding:4px 8px;border-radius:6px;font-size:12px;word-break:break-all;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:768px){.security-settings[data-v-5ba1ffae]{padding:15px}.first-settings[data-v-5ba1ffae] .el-form{padding:12px 15px}.first-settings[data-v-5ba1ffae] .el-form-item__content{max-width:100%}.token-table-container[data-v-5ba1ffae]{padding:0 10px}.table-cell-content[data-v-5ba1ffae]{padding:6px 2px;min-height:36px}.token-display[data-v-5ba1ffae]{font-size:11px;padding:3px 6px}}@media (max-width:480px){.token-table-container[data-v-5ba1ffae]{padding:0 5px}.table-cell-content[data-v-5ba1ffae]{padding:4px 2px;min-height:32px;font-size:12px}.action-buttons .el-button[data-v-5ba1ffae]{padding:4px 8px;font-size:12px}.permission-tag[data-v-5ba1ffae]{font-size:11px;padding:0 4px;height:20px;line-height:20px}}.token-result[data-v-5ba1ffae]{padding:10px 0}.token-result .el-form-item[data-v-5ba1ffae]{margin-bottom:20px}.dialog-footer[data-v-5ba1ffae]{display:flex;justify-content:flex-end;gap:10px}.fade-slide-enter-active[data-v-5ba1ffae],.fade-slide-leave-active[data-v-5ba1ffae]{transition:all .3s ease-in-out}.fade-slide-enter-from[data-v-5ba1ffae],.fade-slide-leave-to[data-v-5ba1ffae]{opacity:0;transform:translateY(-10px)}.fade-slide-enter-to[data-v-5ba1ffae],.fade-slide-leave-from[data-v-5ba1ffae]{opacity:1;transform:translateY(0)}[data-v-5ba1ffae] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.page-settings[data-v-6952c6cd]{padding:20px;min-height:500px}.first-settings[data-v-6952c6cd]{margin-bottom:40px}.first-title[data-v-6952c6cd]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-6952c6cd]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-6952c6cd] .el-form{padding:16px 20px;background:var(--el-fill-color-lighter);border-radius:12px;border:1px solid var(--el-border-color-lighter)}.first-settings[data-v-6952c6cd] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-6952c6cd] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-6952c6cd] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-6952c6cd] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-6952c6cd] .el-input,.first-settings[data-v-6952c6cd] .el-select{width:100%}.first-settings[data-v-6952c6cd] .el-switch{--el-switch-on-color:var(--el-color-primary)}.actions[data-v-6952c6cd]{margin-top:20px;display:flex;justify-content:flex-end;gap:12px}.actions[data-v-6952c6cd] .el-button{border-radius:8px;padding:10px 20px}@media (max-width:768px){.page-settings[data-v-6952c6cd]{padding:15px}.first-settings[data-v-6952c6cd] .el-form{padding:12px 15px}.first-settings[data-v-6952c6cd] .el-form-item__content{max-width:100%}}.others-settings[data-v-6c3b44d2]{padding:20px;min-height:500px}.first-settings[data-v-6c3b44d2]{margin-bottom:40px}.first-title[data-v-6c3b44d2]{display:flex;align-items:center;gap:8px;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--el-color-primary-light-7)}.second-title[data-v-6c3b44d2]{display:flex;align-items:center;gap:8px;text-align:start;margin-left:0;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--el-border-color-lighter)}.first-settings[data-v-6c3b44d2] .el-form{padding:16px 20px;background:var(--el-fill-color-lighter);border-radius:12px;border:1px solid var(--el-border-color-lighter);margin-bottom:20px}.first-settings[data-v-6c3b44d2] .el-form-item{margin-bottom:20px;display:flex;flex-direction:column;align-items:flex-start}.first-settings[data-v-6c3b44d2] .el-form-item:last-child{margin-bottom:0}.first-settings[data-v-6c3b44d2] .el-form-item__label{text-align:left;padding-bottom:8px;font-weight:500;color:var(--el-text-color-primary);width:auto!important;display:flex;align-items:center;gap:5px}.first-settings[data-v-6c3b44d2] .el-form-item__content{width:100%;max-width:400px;margin-left:0!important}.first-settings[data-v-6c3b44d2] .el-input{width:100%}.first-settings[data-v-6c3b44d2] .el-switch{--el-switch-on-color:var(--el-color-primary)}.actions[data-v-6c3b44d2]{margin-top:20px;display:flex;justify-content:flex-end;gap:12px}.actions[data-v-6c3b44d2] .el-button{border-radius:8px;padding:10px 20px}@media (max-width:768px){.others-settings[data-v-6c3b44d2]{padding:15px}.first-settings[data-v-6c3b44d2] .el-form{padding:12px 15px}.first-settings[data-v-6c3b44d2] .el-form-item__content{max-width:100%}}.container[data-v-207ead06]{background:var(--admin-container-bg-color);min-height:100vh;font-family:Arial,sans-serif;color:var(--admin-container-color);margin:0;padding:0;overflow-x:hidden}.header-content[data-v-207ead06]{display:flex;justify-content:space-between;align-items:center;padding:10px 24px;background:hsla(0,0%,100%,.72);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.3);border-top:1px solid hsla(0,0%,100%,.5);box-shadow:0 4px 30px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.4);transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:16px;position:fixed;top:8px;left:50%;transform:translateX(-50%);width:calc(95% - 16px);z-index:2001;min-height:45px}html.dark .header-content[data-v-207ead06]{background:rgba(30,30,30,.75);border:1px solid hsla(0,0%,100%,.08);border-top:1px solid hsla(0,0%,100%,.12);box-shadow:0 4px 30px rgba(0,0,0,.3),0 1px 3px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.05)}@media (max-width:768px){.header-content[data-v-207ead06]{flex-direction:column;top:6px;width:calc(100% - 32px);border-radius:14px;padding:6px 12px;gap:4px}.header-icon[data-v-207ead06]{font-size:.95em}}.header-content[data-v-207ead06]:hover{background:hsla(0,0%,100%,.82);box-shadow:0 8px 40px rgba(0,0,0,.12),0 2px 6px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.5);transform:translateX(-50%) translateY(-1px)}html.dark .header-content[data-v-207ead06]:hover{background:rgba(35,35,35,.85);box-shadow:0 8px 40px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.08)}.header-icon[data-v-207ead06]{font-size:1.5em;cursor:pointer;transition:all .3s ease;color:var(--admin-container-color);outline:none}.header-icon[data-v-207ead06]:hover{color:#b39ddb;transform:scale(1.2)}.header-action[data-v-207ead06]{display:flex;gap:10px}.main-container[data-v-207ead06]{margin-top:60px;transition:margin-left .3s ease,width .3s ease;width:calc(100% - 280px);margin-left:170px}.main-container.collapsed[data-v-207ead06]{width:calc(100% - 150px);margin-left:80px}@media (max-width:768px){.main-container.collapsed[data-v-207ead06],.main-container[data-v-207ead06]{width:calc(100% - 80px);margin-left:70px;padding:0 10px;min-height:calc(100vh - 60px)}} \ No newline at end of file diff --git a/css/957.c1cd087c.css.gz b/css/957.c1cd087c.css.gz deleted file mode 100644 index 00ca52a..0000000 Binary files a/css/957.c1cd087c.css.gz and /dev/null differ diff --git a/css/app.52df53e3.css b/css/app.52df53e3.css deleted file mode 100644 index efea4d4..0000000 --- a/css/app.52df53e3.css +++ /dev/null @@ -1 +0,0 @@ -#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}nav{padding:30px}nav a{font-weight:700;color:#2c3e50}nav a.router-link-exact-active{color:#42b983}body{margin:0;padding:0;background-color:#f8f8f8}:focus-visible{outline:none}.el-dropdown__popper.el-popper{background-color:hsla(0,0%,100%,.8);box-shadow:0 0 10px 2px rgba(0,0,0,.1)}.el-popper.is-light>.el-popper__arrow:before{background:none;border:none}:root{--bg-color:linear-gradient(90deg,#efe8e8,#e4f8ff);--popper-bg-color:hsla(0,0%,100%,.8);--popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--image-preview-filter:brightness(1);--text-bg-color:rgba(0,0,0,.1);--background-image-filter:brightness(1);--upload-list-card-bg-color:hsla(0,0%,100%,.7);--upload-list-card-border:1px solid #327ecc50;--upload-list-card-box-shadow:1px 2px 5px 1px #327ecc50;--upload-list-item-border:1px solid #a5bef7;--upload-list-dashboard-bg-color:hsla(0,0%,100%,.7);--upload-list-dashboard-shadow:0 2px 10px rgba(0,0,0,.1);--upload-list-file-icon-color:#327ecc;--el-upload-dragger-bg-color:hsla(0,0%,100%,.6);--el-upload-dragger-border:3px dashed #409eff;--el-upload-dragger-border-color:#409eff;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #409eff;--el-upload-dragger-uniform-color:#409eff;--paste-card-textarea-border-color:#409eff;--paste-card-textarea-box-shadow:0 0 6px 1px #409eff;--el-icon--upload-color:#1f8bf8;--upload-text-color:rgba(58,58,58,.8);--upload-header-color:rgba(58,58,58,.8);--upload-main-title-color:linear-gradient(90deg,#a1e3cc,#78aeec);--modern-action-group-bg:rgba(64,158,255,.08);--modern-action-group-border:rgba(64,158,255,.15);--logo-glow-color:#409eff;--modern-action-group-shadow:rgba(0,0,0,.06);--modern-action-group-hover-bg:rgba(64,158,255,.12);--modern-action-group-hover-shadow:rgba(64,158,255,.15);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.08),rgba(64,158,255,.03));--file-name-border:rgba(64,158,255,.12);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.06));--file-name-hover-border:rgba(64,158,255,.2);--upload-list-item-bg:linear-gradient(135deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.7));--upload-list-item-border-color:rgba(64,158,255,.1);--upload-list-item-shadow:rgba(0,0,0,.04);--upload-list-item-hover-border:rgba(64,158,255,.25);--upload-list-item-hover-shadow:rgba(64,158,255,.12);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.06),transparent);--toolbar-button-bg-color:hsla(0,0%,100%,.5);--toolbar-button-shadow:1px 2px 4px rgba(0,0,0,.3);--toolbar-button-shadow-hover:1px 2px 4px rgba(0,0,0,.5);--toolbar-button-color:#327ecc;--page-footer-text-color:rgba(58,58,58,.8);--page-footer-name-color:rgba(12,76,105,.8);--login-container-bg-color:hsla(0,0%,100%,.6);--password-input-bg-color:hsla(0,0%,100%,.9);--password-input-border:1px solid #dcdfe6;--login-title-color:#000;--login-container-box-shadow:0 0 12px rgba(0,0,0,.12);--login-container-hover-box-shadow:0 0 12px 4px rgba(0,0,0,.24);--login-submit-btn-bg-color:#487cb0e8;--login-title-glow-color:rgba(52,152,219,.5);--login-input-underline-color:#5b9bd3;--login-input-underline-secondary-color:#7ba9d8;--login-input-label-focus-color:#5b9bd3;--dialog-bg-color:hsla(0,0%,100%,.7);--dialog-box-shadow:0 0 10px 2px rgba(0,0,0,.1);--tabs-dropdown-popper-bg-color:hsla(0,0%,100%,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px rgba(0,0,0,.1);--admin-header-content-bg-color:hsla(0,0%,100%,.75);--admin-header-content-hover-bg-color:hsla(0,0%,100%,.85);--admin-header-content-border-bottom:1px solid rgba(0,0,0,.1);--admin-header-content-box-shadow:0 4px 6px rgba(0,0,0,.1);--admin-header-content-hover-box-shadow:0 6px 10px rgba(0,0,0,.2);--admin-container-bg-color:linear-gradient(90deg,#fdf3f6,#e4f8ff);--admin-container-color:#333;--admin-dashborad-stats-bg-color:hsla(0,0%,100%,.9);--admin-dashborad-stats-hover-bg-color:#f0eaf8;--admin-dashboard-search-card-bg-color:hsla(0,0%,100%,.9);--admin-dashboard-stats-shadow:0 2px 4px rgba(0,0,0,.05);--admin-dashboard-stats-hover-shadow:0 4px 6px rgba(0,0,0,.1);--admin-dashboard-search-card-box-shadow:0 2px 6px rgba(0,0,0,.1);--admin-dashboard-btn-color:#000;--admin-dashboard-btn-bg-color:hsla(0,0%,100%,.3);--admin-dashboard-btn-shadow:0 2px 4px rgba(0,0,0,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px rgba(0,0,0,.3);--admin-dashboard-imgcard-bg-color:hsla(0,0%,100%,.6);--admin-dashboard-imgcard-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-bg-color:#fff;--admin-dashboard-tag-suggestion-border-color:#dcdfe6;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px rgba(0,0,0,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#f5f7fa;--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.1);--admin-cuscfg-table-bg-color:hsla(0,0%,100%,.95);--admin-syscfg-tabs-border-color:#3c3c3c4c;--admin-purple:#b39ddb;--theme-toggle-color:#327ecc;--theme-toggle-bg-color:#327ecc;--admin-theme-toggle-color:#000;--admin-theme-toggle-bg-color:#000;--not-found-title-text-color:linear-gradient(90deg,#6b9788,#6285ac)}.dark{--bg-color:linear-gradient(90deg,#1c1c1c,#000);--popper-bg-color:rgba(0,0,0,.8);--popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--image-preview-filter:brightness(0.8);--text-bg-color:hsla(0,0%,100%,.1);--background-image-filter:brightness(0.6);--upload-list-card-bg-color:rgba(0,0,0,.7);--upload-list-card-border:1px solid #8fadc8;--upload-list-card-box-shadow:-1px 2px 4px #c1ddf5ae;--upload-list-item-border:1px solid #8fadc8;--upload-list-dashboard-bg-color:rgba(0,0,0,.7);--upload-list-dashboard-shadow:0 2px 10px hsla(0,0%,100%,.1);--upload-list-file-icon-color:#8fadc8;--el-upload-dragger-bg-color:rgba(0,0,0,.6);--el-upload-dragger-border:3px dashed #8fadc8;--el-upload-dragger-border-color:#8fadc8;--el-upload-dragger-hover-box-shadow:0 0 10px 5px #8fadc8;--el-upload-dragger-uniform-color:#8fadc8;--paste-card-textarea-border-color:#8fadc8;--paste-card-textarea-box-shadow:0 0 6px 1px #8fadc8;--el-icon--upload-color:#ffebcd;--upload-text-color:#faebd7;--upload-header-color:#ffebcd;--upload-main-title-color:linear-gradient(90deg,#effac3,#f3a060);--toolbar-button-bg-color:rgba(0,0,0,.7);--toolbar-button-shadow:-1px 2px 4px hsla(0,0%,100%,.3);--toolbar-button-shadow-hover:-1px 2px 4px hsla(0,0%,100%,.5);--toolbar-button-color:#bedefd;--modern-action-group-bg:rgba(64,158,255,.12);--modern-action-group-border:rgba(64,158,255,.2);--logo-glow-color:#8fadc8;--modern-action-group-shadow:rgba(0,0,0,.2);--modern-action-group-hover-bg:rgba(64,158,255,.18);--modern-action-group-hover-shadow:rgba(64,158,255,.25);--file-name-bg:linear-gradient(135deg,rgba(64,158,255,.12),rgba(64,158,255,.05));--file-name-border:rgba(64,158,255,.18);--file-name-hover-bg:linear-gradient(135deg,rgba(64,158,255,.18),rgba(64,158,255,.08));--file-name-hover-border:rgba(64,158,255,.3);--upload-list-item-bg:linear-gradient(135deg,rgba(30,30,30,.9),rgba(40,40,40,.7));--upload-list-item-border-color:rgba(64,158,255,.15);--upload-list-item-shadow:rgba(0,0,0,.15);--upload-list-item-hover-border:rgba(64,158,255,.35);--upload-list-item-hover-shadow:rgba(64,158,255,.2);--dashboard-title-bg:linear-gradient(135deg,rgba(64,158,255,.1),transparent);--page-footer-text-color:#f0f8ff;--page-footer-name-color:#faebd7;--login-container-bg-color:rgba(0,0,0,.6);--password-input-bg-color:rgba(77,77,77,.8);--password-input-border:1px solid #919191;--login-title-color:#f0f8ff;--login-container-box-shadow:-3px 2px 12px hsla(0,0%,100%,.12);--login-container-hover-box-shadow:-3px 2px 12px 4px hsla(0,0%,100%,.24);--login-submit-btn-bg-color:#8fadc8b4;--login-title-glow-color:rgba(143,173,200,.7);--login-input-underline-color:#a3c5e5;--login-input-underline-secondary-color:#b8d0e8;--login-input-label-focus-color:#a3c5e5;--dialog-bg-color:rgba(0,0,0,.8);--dialog-box-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--tabs-dropdown-popper-bg-color:rgba(0,0,0,.2);--tabs-dropdown-popper-shadow:0 0 10px 2px hsla(0,0%,100%,.1);--admin-header-content-bg-color:rgba(0,0,0,.75);--admin-header-content-hover-bg-color:rgba(0,0,0,.85);--admin-header-content-border-bottom:1px solid hsla(0,0%,100%,.1);--admin-header-content-box-shadow:0 4px 6px hsla(0,0%,100%,.1);--admin-header-content-hover-box-shadow:0 6px 10px hsla(0,0%,100%,.2);--admin-container-bg-color:linear-gradient(90deg,#464545,#2d2d2d);--admin-container-color:#f0f0f0;--admin-dashborad-stats-bg-color:rgba(0,0,0,.9);--admin-dashborad-stats-hover-bg-color:#1e1e1e;--admin-dashboard-stats-shadow:0 2px 4px hsla(0,0%,100%,.1);--admin-dashboard-stats-hover-shadow:0 4px 6px hsla(0,0%,100%,.15);--admin-dashboard-search-card-bg-color:rgba(0,0,0,.9);--admin-dashboard-search-card-box-shadow:0 2px 6px hsla(0,0%,100%,.1);--admin-dashboard-btn-color:#f0f0f0;--admin-dashboard-btn-bg-color:rgba(0,0,0,.3);--admin-dashboard-btn-shadow:0 2px 4px hsla(0,0%,100%,.3);--admin-dashboard-btn-hover-shadow:0 4px 6px hsla(0,0%,100%,.3);--admin-dashboard-imgcard-bg-color:rgba(0,0,0,.6);--admin-dashboard-imgcard-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-bg-color:#2d2d2d;--admin-dashboard-tag-suggestion-border-color:#555;--admin-dashboard-tag-suggestion-box-shadow:0 2px 12px hsla(0,0%,100%,.1);--admin-dashboard-tag-suggestion-item-hover-bg-color:#3a3a3a;--admin-cuscfg-table-shadow:0 4px 6px rgba(0,0,0,.3),0 0 1px 1px hsla(0,0%,100%,.05);--admin-cuscfg-table-bg-color:rgba(45,45,45,.95);--admin-syscfg-tabs-border-color:#cfcccc47;--theme-toggle-color:#bedefd;--theme-toggle-bg-color:#bedefd;--admin-theme-toggle-color:#fff;--admin-theme-toggle-bg-color:#fcfcfc;--not-found-title-text-color:linear-gradient(90deg,#effac3,#f3a060)}.el-message{border-radius:50px!important;border:none!important;padding:10px 30px!important;box-shadow:0 4px 16px rgba(0,0,0,.2)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background-color:rgba(40,40,40,.85)!important;min-width:unset!important;top:30px!important}.el-message .el-message__icon{font-size:18px!important;color:#fff!important}.el-message .el-message__content{font-size:16px!important;font-weight:500!important;color:#fff!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;letter-spacing:.5px}.el-message--success .el-message__icon{color:#67c23a!important}.el-message--warning .el-message__icon{color:#e6a23c!important}.el-message--error .el-message__icon{color:#f56c6c!important}.dark .el-message{background-color:hsla(0,0%,100%,.2)!important;border:1px solid hsla(0,0%,100%,.1)!important;box-shadow:0 4px 16px rgba(0,0,0,.4)!important}.dialog-section{margin-bottom:24px;background:var(--el-fill-color-lighter);border-radius:12px;padding:16px;border:1px solid var(--el-border-color-lighter)}.section-header{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--el-border-color-lighter)}.section-title{font-size:15px;font-weight:600;color:var(--el-text-color-primary)}.section-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:14px;transition:color .2s}.section-help-icon:hover{color:var(--el-color-primary)}.section-content{display:flex;flex-direction:column;gap:16px}.radio-card-group{display:flex;flex-wrap:wrap;gap:10px}.radio-card-group .radio-card{margin-right:0;padding:10px 16px;border-radius:8px;background:var(--el-bg-color);border:1px solid var(--el-border-color-lighter);transition:all .2s ease}.radio-card-group .radio-card:hover{border-color:var(--el-color-primary-light-5)}.radio-card-group .radio-card.is-checked{background:linear-gradient(135deg,rgba(64,158,255,.1),rgba(56,189,248,.05));border-color:var(--el-color-primary)}.radio-card-group .el-radio__input{display:none}.radio-card-group .el-radio__label{padding-left:0;font-weight:500;display:flex;align-items:center;gap:8px}.setting-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--el-bg-color);border-radius:8px;border:1px solid var(--el-border-color-lighter)}.setting-label{font-size:14px;font-weight:500;color:var(--el-text-color-primary)}.setting-input{width:60%;max-width:250px}.dialog-action{display:flex;justify-content:flex-end;padding-top:16px}.confirm-btn{min-width:100px;border-radius:8px}@media (max-width:768px){.el-message{padding:8px 18px!important;border-radius:30px!important}.el-message .el-message__icon{font-size:14px!important}.el-message .el-message__content{font-size:13px!important}.dialog-section{padding:12px}.radio-card-group{flex-direction:column}.radio-card-group .radio-card{width:100%;text-align:center}.setting-item{flex-direction:column;align-items:flex-start;gap:10px}.setting-item .radio-card-group.compact{width:100%}.setting-input{width:100%;max-width:none}.radio-card-group.compact{flex-direction:row;display:grid;grid-template-columns:repeat(2,1fr);gap:8px;width:100%}.radio-card-group.compact .radio-card{width:100%;box-sizing:border-box;justify-content:center;flex:1}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;justify-content:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}}.slider-item{flex-direction:column;align-items:flex-start;gap:12px}.slider-wrapper{display:flex;align-items:center;gap:12px;width:100%}.slider-wrapper .el-slider{flex:1;min-width:0}.slider-input{width:80px!important;flex-shrink:0}.slider-input .el-input__wrapper{padding:0 8px}.slider-input-wrapper{display:flex;align-items:center;gap:6px;flex-shrink:0}.slider-unit{font-size:13px;font-weight:500;color:var(--el-text-color-secondary)}@media (max-width:768px){.slider-wrapper{gap:8px;width:100%}.slider-input{width:80px!important}.setting-input{width:100%!important;max-width:none!important}.dialog-section{overflow:hidden}.radio-card-group.grid-2x2{grid-template-columns:repeat(2,1fr);gap:8px}.radio-card-group.grid-2x2 .radio-card{padding:10px 8px;font-size:13px}}.inline-help-icon{color:var(--el-text-color-secondary);cursor:pointer;font-size:13px;margin-left:6px;transition:color .2s}.inline-help-icon:hover{color:var(--el-color-primary)}.radio-card-group.compact{gap:8px}.radio-card-group.compact .radio-card{padding:8px 12px;font-size:13px}.radio-card-group.compact .radio-card .el-radio__label{display:flex;align-items:center;gap:6px}.radio-card-group.compact .channel-icon{width:16px;text-align:center;flex-shrink:0}.radio-card-group.grid-2x2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.radio-card-group.grid-2x2 .radio-card{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:flex-start;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:20px}.radio-icon{font-size:14px;opacity:.8;width:20px;text-align:center;display:inline-block}.radio-card.is-checked .radio-icon{opacity:1}.el-dialog,.el-message-box{border-radius:16px!important;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.2)!important;border:1px solid hsla(0,0%,100%,.5);background-color:hsla(0,0%,100%,.85)!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.el-dialog__header,.el-message-box__header{border-bottom:none;padding:16px 20px!important;margin-right:0!important;position:relative}.el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.5) 20%,rgba(156,163,175,.8) 50%,rgba(156,163,175,.5) 80%,transparent)}.el-dialog__header:after,.el-message-box__header:after{content:"";position:absolute;bottom:0;left:20px;right:20px;height:1px}.el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.8),rgba(156,163,175,.5) 30%,transparent 80%)}.el-dialog__body,.el-message-box__content{padding:20px!important}.el-dialog__footer,.el-message-box__btns{border-top:none;padding:12px 20px!important;background-color:transparent}.dark .el-dialog,.dark .el-message-box{background-color:rgba(30,30,30,.75)!important;border:1px solid hsla(0,0%,100%,.08)!important;box-shadow:0 12px 32px rgba(0,0,0,.5)!important}.dark .el-dialog__header,.dark .el-message-box__header{border-bottom:none}.dark .el-dialog__header:after{background:linear-gradient(90deg,transparent,rgba(156,163,175,.3) 20%,rgba(156,163,175,.5) 50%,rgba(156,163,175,.3) 80%,transparent)}.dark .el-message-box__header:after{background:linear-gradient(90deg,rgba(156,163,175,.5),rgba(156,163,175,.3) 30%,transparent 80%)}.dark .el-dialog__footer,.dark .el-message-box__btns{border-top:none;background-color:transparent}.dark .el-dialog__title,.dark .el-message-box__title{color:#e5eaf3}.dark .el-message-box__content{color:#cfd3dc}.el-loading-mask{border-radius:12px}.el-dropdown__popper.el-popper{border-radius:12px;border:none;background-color:var(--popper-bg-color);backdrop-filter:blur(10px);box-shadow:var(--popper-shadow)}.el-dropdown__popper.el-popper .el-dropdown-menu,.el-dropdown__popper.el-popper .el-dropdown-menu__item{background:none;border:none}.el-popper.is-light>.el-popper__arrow:before{background:none!important;border:none!important}*,body,html{scrollbar-width:none!important;-ms-overflow-style:none!important}::-webkit-scrollbar,body::-webkit-scrollbar,html::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.os-theme-dark{--os-handle-bg:hsla(0,0%,50%,.5);--os-handle-bg-hover:hsla(0,0%,50%,.7);--os-handle-bg-active:hsla(0,0%,50%,.85)}.dark .os-theme-dark,html.dark .os-theme-dark{--os-handle-bg:hsla(0,0%,71%,.6);--os-handle-bg-hover:hsla(0,0%,71%,.75);--os-handle-bg-active:hsla(0,0%,71%,.9)}.os-theme-dark .os-scrollbar,.os-theme-dark .os-scrollbar-horizontal,.os-theme-dark .os-scrollbar-vertical{--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-bg:transparent;--os-track-bg-hover:transparent;--os-track-bg-active:transparent}.os-theme-dark .os-scrollbar .os-scrollbar-handle{border-radius:10px!important;transition:background-color .2s ease,opacity .2s ease!important} \ No newline at end of file diff --git a/css/app.52df53e3.css.gz b/css/app.52df53e3.css.gz deleted file mode 100644 index e932945..0000000 Binary files a/css/app.52df53e3.css.gz and /dev/null differ diff --git a/css/chunk-vendors.4363ed49.css b/css/chunk-vendors.4363ed49.css deleted file mode 100644 index f1b92b0..0000000 --- a/css/chunk-vendors.4363ed49.css +++ /dev/null @@ -1,10 +0,0 @@ -@charset "UTF-8";:root{--el-color-white:#fff;--el-color-black:#000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:0.3s;--el-transition-duration-fast:0.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(0.645,0.045,0.355,1);--el-transition-function-fast-bezier:cubic-bezier(0.23,1,0.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#fff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#fff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#fff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:hsla(0,0%,100%,.9);--el-mask-color-extra-light:hsla(0,0%,100%,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translateX(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:0.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.el-message-box-parent--hidden{overflow:hidden}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:hsla(0,0%,100%,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea .el-input__count.is-outside{background:transparent;bottom:unset;line-height:1;padding-top:2px;position:absolute;right:0;top:100%}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input .el-input__count.is-outside{height:unset;padding-top:2px;position:absolute;right:0;top:100%}.el-input .el-input__count.is-outside .el-input__count-inner{background:transparent;line-height:1;padding-left:0}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-disabled .el-input__prefix-inner,.el-input.is-disabled .el-input__suffix-inner{pointer-events:none}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;flex:1;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-bottom-left-radius:0;border-left:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:#3375b9;--el-color-primary-light-5:#2a598a;--el-color-primary-light-7:#213d5b;--el-color-primary-light-8:#1d3043;--el-color-primary-light-9:#18222b;--el-color-primary-dark-2:#66b1ff;--el-color-success:#67c23a;--el-color-success-light-3:#4e8e2f;--el-color-success-light-5:#3e6b27;--el-color-success-light-7:#2d481f;--el-color-success-light-8:#25371c;--el-color-success-light-9:#1c2518;--el-color-success-dark-2:#85ce61;--el-color-warning:#e6a23c;--el-color-warning-light-3:#a77730;--el-color-warning-light-5:#7d5b28;--el-color-warning-light-7:#533f20;--el-color-warning-light-8:#3e301c;--el-color-warning-light-9:#292218;--el-color-warning-dark-2:#ebb563;--el-color-danger:#f56c6c;--el-color-danger-light-3:#b25252;--el-color-danger-light-5:#854040;--el-color-danger-light-7:#582e2e;--el-color-danger-light-8:#412626;--el-color-danger-light-9:#2a1d1d;--el-color-danger-dark-2:#f78989;--el-color-error:#f56c6c;--el-color-error-light-3:#b25252;--el-color-error-light-5:#854040;--el-color-error-light-7:#582e2e;--el-color-error-light-8:#412626;--el-color-error-light-9:#2a1d1d;--el-color-error-dark-2:#f78989;--el-color-info:#909399;--el-color-info-light-3:#6b6d71;--el-color-info-light-5:#525457;--el-color-info-light-7:#393a3c;--el-color-info-light-8:#2d2d2f;--el-color-info-light-9:#202121;--el-color-info-dark-2:#a6a9ad;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.36),0px 8px 20px rgba(0,0,0,.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.72),0px 12px 32px #000,0px 8px 16px -8px #000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#e5eaf3;--el-text-color-regular:#cfd3dc;--el-text-color-secondary:#a3a6ad;--el-text-color-placeholder:#8d9095;--el-text-color-disabled:#6c6e72;--el-border-color-darker:#636466;--el-border-color-dark:#58585b;--el-border-color:#4c4d4f;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2b2b2c;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393a;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1d1d1d;--el-fill-color-extra-light:#191919;--el-fill-color-blank:#141414;--el-mask-color:rgba(0,0,0,.8);--el-mask-color-extra-light:rgba(0,0,0,.3)}html.dark .el-button{--el-button-disabled-text-color:hsla(0,0%,100%,.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a} -/*! - * OverlayScrollbars - * Version: 2.13.0 - * - * Copyright (c) Rene Haas | KingSora. - * https://github.com/KingSora - * - * Released under the MIT license. - */.os-size-observer,.os-size-observer-listener{scroll-behavior:auto!important;direction:inherit;pointer-events:none;overflow:hidden;visibility:hidden;box-sizing:border-box}.os-size-observer,.os-size-observer-listener,.os-size-observer-listener-item,.os-size-observer-listener-item-final{writing-mode:horizontal-tb;position:absolute;left:0;top:0}.os-size-observer{z-index:-1;contain:strict;display:flex;flex-direction:row;flex-wrap:nowrap;padding:inherit;border:inherit;box-sizing:inherit;margin:-133px;top:0;right:0;bottom:0;left:0;transform:scale(.1)}.os-size-observer:before{content:"";flex:none;box-sizing:inherit;padding:10px;width:10px;height:10px}.os-size-observer-appear{animation:os-size-observer-appear-animation 1ms forwards}.os-size-observer-listener{box-sizing:border-box;position:relative;flex:auto;padding:inherit;border:inherit;margin:-133px;transform:scale(10)}.os-size-observer-listener.ltr{margin-right:-266px;margin-left:0}.os-size-observer-listener.rtl{margin-left:-266px;margin-right:0}.os-size-observer-listener:empty:before{content:"";width:100%;height:100%}.os-size-observer-listener:empty:before,.os-size-observer-listener>.os-size-observer-listener-item{display:block;position:relative;padding:inherit;border:inherit;box-sizing:content-box;flex:auto}.os-size-observer-listener-scroll{box-sizing:border-box;display:flex}.os-size-observer-listener-item{right:0;bottom:0;overflow:hidden;direction:ltr;flex:none}.os-size-observer-listener-item-final{transition:none}@keyframes os-size-observer-appear-animation{0%{cursor:auto}to{cursor:none}}.os-trinsic-observer{flex:none;box-sizing:border-box;position:relative;max-width:0;max-height:1px;padding:0;margin:0;border:none;overflow:hidden;z-index:-1;height:0;top:calc(100% + 1px);contain:strict}.os-trinsic-observer:not(:empty){height:calc(100% + 1px);top:-1px}.os-trinsic-observer:not(:empty)>.os-size-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport]),[data-overlayscrollbars-viewport~=scrollbarHidden],html[data-overlayscrollbars-viewport~=scrollbarHidden]>body{scrollbar-width:none!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar,[data-overlayscrollbars-initialize]:not([data-overlayscrollbars-viewport])::-webkit-scrollbar-corner,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar,[data-overlayscrollbars-viewport~=scrollbarHidden]::-webkit-scrollbar-corner,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar,html[data-overlayscrollbars-viewport~=scrollbarHidden]>body::-webkit-scrollbar-corner{-webkit-appearance:none!important;appearance:none!important;display:none!important;width:0!important;height:0!important}[data-overlayscrollbars-initialize]:not([data-overlayscrollbars]):not(html):not(body){overflow:auto}html[data-overlayscrollbars-body]{overflow:hidden}html[data-overlayscrollbars-body],html[data-overlayscrollbars-body]>body{width:100%;height:100%;margin:0}html[data-overlayscrollbars-body]>body{overflow:visible;margin:0}[data-overlayscrollbars]{position:relative}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{display:flex;align-items:stretch!important;flex-direction:row!important;flex-wrap:nowrap!important;scroll-behavior:auto!important}[data-overlayscrollbars-padding],[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){box-sizing:inherit;position:relative;flex:auto;height:auto;width:100%;min-width:0;padding:0;margin:0;border:none;z-index:0}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]){--os-vaw:0;--os-vah:0;outline:none}[data-overlayscrollbars-viewport]:not([data-overlayscrollbars]):focus{outline:none}[data-overlayscrollbars-viewport][data-overlayscrollbars-viewport~=arrange]:before{content:"";position:absolute;pointer-events:none;z-index:-1;min-width:1px;min-height:1px;width:var(--os-vaw);height:var(--os-vah)}[data-overlayscrollbars-padding],[data-overlayscrollbars~=host]{overflow:hidden!important}[data-overlayscrollbars-padding~=noClipping],[data-overlayscrollbars~=host][data-overlayscrollbars~=noClipping]{overflow:visible!important}[data-overlayscrollbars-viewport]{--os-viewport-overflow-x:hidden;--os-viewport-overflow-y:hidden;overflow-x:var(--os-viewport-overflow-x);overflow-y:var(--os-viewport-overflow-y)}[data-overlayscrollbars-viewport~=overflowXVisible]{--os-viewport-overflow-x:visible}[data-overlayscrollbars-viewport~=overflowXHidden]{--os-viewport-overflow-x:hidden}[data-overlayscrollbars-viewport~=overflowXScroll]{--os-viewport-overflow-x:scroll}[data-overlayscrollbars-viewport~=overflowYVisible]{--os-viewport-overflow-y:visible}[data-overlayscrollbars-viewport~=overflowYHidden]{--os-viewport-overflow-y:hidden}[data-overlayscrollbars-viewport~=overflowYScroll]{--os-viewport-overflow-y:scroll}[data-overlayscrollbars-viewport~=overflowImportant]{overflow-x:var(--os-viewport-overflow-x)!important;overflow-y:var(--os-viewport-overflow-y)!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId){font-size:0!important;line-height:0!important}[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):after,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId):before,[data-overlayscrollbars-viewport~=noContent]:not(#osFakeId)>*{display:none!important;position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border-width:0!important}[data-overlayscrollbars-viewport~=measuring],[data-overlayscrollbars-viewport~=scrolling]{scroll-behavior:auto!important;scroll-snap-type:none!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowXVisible]{overflow-x:hidden!important}[data-overlayscrollbars-viewport~=measuring][data-overlayscrollbars-viewport~=overflowYVisible]{overflow-y:hidden!important}[data-overlayscrollbars-content]{box-sizing:inherit}[data-overlayscrollbars-contents]:not(#osFakeId):not([data-overlayscrollbars-padding]):not([data-overlayscrollbars-viewport]):not([data-overlayscrollbars-content]){display:contents}[data-overlayscrollbars-grid],[data-overlayscrollbars-grid] [data-overlayscrollbars-padding]{display:grid;grid-template:1fr/1fr}[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding],[data-overlayscrollbars-grid]>[data-overlayscrollbars-padding]>[data-overlayscrollbars-viewport],[data-overlayscrollbars-grid]>[data-overlayscrollbars-viewport]{height:auto!important;width:auto!important}@property --os-scroll-percent{syntax:"";inherits:true;initial-value:0}@property --os-viewport-percent{syntax:"";inherits:true;initial-value:0}.os-scrollbar{--os-viewport-percent:0;--os-scroll-percent:0;--os-scroll-direction:0;--os-scroll-percent-directional:calc(var(--os-scroll-percent) - (var(--os-scroll-percent) + (1 - var(--os-scroll-percent))*-1)*var(--os-scroll-direction));contain:size layout;contain:size layout style;transition:opacity .15s,visibility .15s,top .15s,right .15s,bottom .15s,left .15s;pointer-events:none;position:absolute;opacity:0;visibility:hidden}body>.os-scrollbar{position:fixed;z-index:99999}.os-scrollbar-transitionless{transition:none!important}.os-scrollbar-track{position:relative;padding:0!important;border:none!important}.os-scrollbar-handle{position:absolute}.os-scrollbar-handle,.os-scrollbar-track{pointer-events:none;width:100%;height:100%}.os-scrollbar.os-scrollbar-handle-interactive .os-scrollbar-handle,.os-scrollbar.os-scrollbar-track-interactive .os-scrollbar-track{pointer-events:auto;touch-action:none}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-scrollbar-rtl.os-scrollbar-horizontal{right:0}.os-scrollbar-rtl.os-scrollbar-vertical{right:auto;left:0}.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-auto-hide.os-scrollbar-auto-hide-hidden{opacity:0;visibility:hidden}.os-scrollbar-interaction.os-scrollbar-visible{opacity:1;visibility:visible}.os-scrollbar-unusable,.os-scrollbar-unusable *,.os-scrollbar-wheel,.os-scrollbar-wheel *{pointer-events:none!important}.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important;transition:none!important}.os-scrollbar-horizontal .os-scrollbar-handle{bottom:0;left:calc(var(--os-scroll-percent-directional)*100%);transform:translateX(calc(var(--os-scroll-percent-directional)*-100%));width:calc(var(--os-viewport-percent)*100%)}.os-scrollbar-vertical .os-scrollbar-handle{right:0;top:calc(var(--os-scroll-percent-directional)*100%);transform:translateY(calc(var(--os-scroll-percent-directional)*-100%));height:calc(var(--os-viewport-percent)*100%)}@supports (container-type:size){.os-scrollbar-track{container-type:size}.os-scrollbar-horizontal .os-scrollbar-handle{left:auto;transform:translateX(calc(var(--os-scroll-percent-directional)*100cqw + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-vertical .os-scrollbar-handle{top:auto;transform:translateY(calc(var(--os-scroll-percent-directional)*100cqh + var(--os-scroll-percent-directional)*-100%))}.os-scrollbar-rtl.os-scrollbar-horizontal .os-scrollbar-handle{right:auto;left:0}}.os-scrollbar-rtl.os-scrollbar-vertical .os-scrollbar-handle{right:auto;left:0}.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-horizontal.os-scrollbar-cornerless.os-scrollbar-rtl{left:0;right:0}.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless,.os-scrollbar.os-scrollbar-vertical.os-scrollbar-cornerless.os-scrollbar-rtl{top:0;bottom:0}@media print{.os-scrollbar{display:none}}.os-scrollbar{--os-size:0;--os-padding-perpendicular:0;--os-padding-axis:0;--os-track-border-radius:0;--os-track-bg:none;--os-track-bg-hover:none;--os-track-bg-active:none;--os-track-border:none;--os-track-border-hover:none;--os-track-border-active:none;--os-handle-border-radius:0;--os-handle-bg:none;--os-handle-bg-hover:none;--os-handle-bg-active:none;--os-handle-border:none;--os-handle-border-hover:none;--os-handle-border-active:none;--os-handle-min-size:33px;--os-handle-max-size:none;--os-handle-perpendicular-size:100%;--os-handle-perpendicular-size-hover:100%;--os-handle-perpendicular-size-active:100%;--os-handle-interactive-area-offset:0}.os-scrollbar-track{border:var(--os-track-border);border-radius:var(--os-track-border-radius);background:var(--os-track-bg);transition:opacity .15s,background-color .15s,border-color .15s}.os-scrollbar-track:hover{border:var(--os-track-border-hover);background:var(--os-track-bg-hover)}.os-scrollbar-track:active{border:var(--os-track-border-active);background:var(--os-track-bg-active)}.os-scrollbar-handle{border:var(--os-handle-border);border-radius:var(--os-handle-border-radius);background:var(--os-handle-bg)}.os-scrollbar-handle:hover{border:var(--os-handle-border-hover);background:var(--os-handle-bg-hover)}.os-scrollbar-handle:active{border:var(--os-handle-border-active);background:var(--os-handle-bg-active)}.os-scrollbar-handle:before,.os-scrollbar-track:before{content:"";position:absolute;left:0;right:0;top:0;bottom:0;display:block}.os-scrollbar-horizontal{padding:var(--os-padding-perpendicular) var(--os-padding-axis);right:var(--os-size);height:var(--os-size)}.os-scrollbar-horizontal.os-scrollbar-rtl{left:var(--os-size);right:0}.os-scrollbar-horizontal .os-scrollbar-track:before{top:calc(var(--os-padding-perpendicular)*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal .os-scrollbar-handle{min-width:var(--os-handle-min-size);max-width:var(--os-handle-max-size);height:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,height .15s}.os-scrollbar-horizontal .os-scrollbar-handle:before{top:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);bottom:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-horizontal:hover .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-horizontal:active .os-scrollbar-handle{height:var(--os-handle-perpendicular-size-active)}.os-scrollbar-vertical{padding:var(--os-padding-axis) var(--os-padding-perpendicular);bottom:var(--os-size);width:var(--os-size)}.os-scrollbar-vertical .os-scrollbar-track:before{left:calc(var(--os-padding-perpendicular)*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical .os-scrollbar-handle{min-height:var(--os-handle-min-size);max-height:var(--os-handle-max-size);width:var(--os-handle-perpendicular-size);transition:opacity .15s,background-color .15s,border-color .15s,width .15s}.os-scrollbar-vertical .os-scrollbar-handle:before{left:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);right:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical.os-scrollbar-rtl .os-scrollbar-handle:before{right:calc((var(--os-padding-perpendicular) + var(--os-handle-interactive-area-offset))*-1);left:calc(var(--os-padding-perpendicular)*-1)}.os-scrollbar-vertical:hover .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-hover)}.os-scrollbar-vertical:active .os-scrollbar-handle{width:var(--os-handle-perpendicular-size-active)}.os-theme-none.os-scrollbar,[data-overlayscrollbars-viewport~=measuring]>.os-scrollbar{display:none!important}.os-theme-dark,.os-theme-light{box-sizing:border-box;--os-size:10px;--os-padding-perpendicular:2px;--os-padding-axis:2px;--os-track-border-radius:10px;--os-handle-interactive-area-offset:4px;--os-handle-border-radius:10px}.os-theme-dark{--os-handle-bg:rgba(0,0,0,.44);--os-handle-bg-hover:rgba(0,0,0,.55);--os-handle-bg-active:rgba(0,0,0,.66)}.os-theme-light{--os-handle-bg:hsla(0,0%,100%,.44);--os-handle-bg-hover:hsla(0,0%,100%,.55);--os-handle-bg-active:hsla(0,0%,100%,.66)} \ No newline at end of file diff --git a/css/chunk-vendors.4363ed49.css.gz b/css/chunk-vendors.4363ed49.css.gz deleted file mode 100644 index 4e50412..0000000 Binary files a/css/chunk-vendors.4363ed49.css.gz and /dev/null differ diff --git a/js/100.d39a82be.js b/js/100.d39a82be.js deleted file mode 100644 index e44a72b..0000000 --- a/js/100.d39a82be.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[100],{2560:function(e,t,i){i.r(t),i.d(t,{default:function(){return p}});var s=i(2619),n=i(6768);function a(e,t,i,a,o,l){const r=s.A;return(0,n.uX)(),(0,n.Wv)(r,{title:l.loginTitle,fields:o.loginFields,"submit-text":"登录","background-key":"loginBkImg","is-admin":!1,loading:o.isLoading,onSubmit:l.handleLogin},null,8,["title","fields","loading","onSubmit"])}i(4114);var o=i(4570),l=i.n(o),r=i(457),d=i(8401),u={data(){return{isLoading:!1,loginFields:[{key:"password",label:"密码",placeholder:"请输入认证码",type:"password",showPassword:!0,icon:"Lock"}]}},computed:{...(0,d.L8)(["userConfig"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},loginTitle(){return`登录到 ${this.ownerName} 图床`}},components:{BaseLogin:s.A},methods:{async handleLogin(e){const{password:t}=e,i=""===t?"unset":t;this.isLoading=!0;const s=new Promise(e=>setTimeout(e,500)),n=r.A.post("/api/login",{authCode:t}).then(e=>({res:e})).catch(e=>({err:e}));try{const[e]=await Promise.all([n,s]);e.res&&200===e.res.status?(l().set("authCode",i,"14d"),this.$router.push("/"),this.$message.success("登录成功")):(this.isLoading=!1,this.$message.error("登录失败,请检查密码是否正确"))}catch(a){this.isLoading=!1,this.$message.error("系统错误")}}}},c=i(1241);const h=(0,c.A)(u,[["render",a]]);var p=h},2619:function(e,t,i){i.d(t,{A:function(){return F}});var s=i(6975),n=i(47),a=(i(5331),i(9648),i(9623)),o=(i(6711),i(813)),l=(i(4896),i(732)),r=i(4453),d=i(6768),u=i(4232),c=i(5130);const h={class:"login-container"},p={class:"login-title",tabindex:"0"},g={class:"input-wrapper"},m={key:0,class:"loading-ring"},f={key:1};function b(e,t,i,b,y,k){const w=r.A,L=l.A,v=o.tk,F=a.WK,C=n.S2,A=s.A;return(0,d.uX)(),(0,d.CE)("div",{class:(0,u.C4)(["login",{"is-focused":y.isFocused}])},[(0,d.bF)(w,{class:"toggle-dark"}),(0,d.bF)(L),(0,d.Lk)("div",h,[(0,d.Lk)("h1",p,(0,u.v_)(i.title),1),((0,d.uX)(!0),(0,d.CE)(d.FK,null,(0,d.pI)(i.fields,(e,t)=>((0,d.uX)(),(0,d.CE)("div",{key:e.key,class:"input-container"},[(0,d.Lk)("label",{class:"input-name",ref_for:!0,ref:`inputLabel${t}`,style:(0,u.Tr)({"--underline-width":y.labelUnderlineWidths[t]+"px"})},(0,u.v_)(e.label),5),(0,d.Lk)("div",g,[(0,d.bF)(F,{modelValue:y.formData[e.key],"onUpdate:modelValue":t=>y.formData[e.key]=t,placeholder:e.placeholder,type:e.type||"text","show-password":e.showPassword,class:"password-input",onKeyup:(0,c.jR)(k.handleSubmit,["enter","native"]),onFocus:k.handleInputFocus,onBlur:k.handleInputBlur},(0,d.eX)({_:2},[e.icon?{name:"prefix",fn:(0,d.k6)(()=>[(0,d.bF)(v,{class:"el-input__icon"},{default:(0,d.k6)(()=>[((0,d.uX)(),(0,d.Wv)((0,d.$y)(e.icon)))]),_:2},1024)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","type","show-password","onKeyup","onFocus","onBlur"])])]))),128)),(0,d.bF)(C,{class:(0,u.C4)(["submit",{"is-loading":i.loading}]),type:"primary",onClick:k.handleSubmit,disabled:i.loading},{default:(0,d.k6)(()=>[i.loading?((0,d.uX)(),(0,d.CE)("div",m)):((0,d.uX)(),(0,d.CE)("span",f,(0,u.v_)(i.submitText),1))]),_:1},8,["class","onClick","disabled"])]),(0,d.bF)(A,{class:"footer"})],2)}i(8111),i(7588);var y=i(8401),k=i(8903),w={name:"BaseLogin",mixins:[k.A],props:{title:{type:String,required:!0},fields:{type:Array,required:!0},submitText:{type:String,default:"登录"},backgroundKey:{type:String,required:!0},isAdmin:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},data(){return{formData:{},labelUnderlineWidths:[],isFocused:!1}},computed:{...(0,y.L8)(["userConfig"])},watch:{fields:{handler(){this.$nextTick(()=>{this.calculateLabelWidths()})},deep:!0}},components:{Footer:s.A,ToggleDark:r.A,Logo:l.A},mounted(){this.initFormData(),this.initializeBackground(this.backgroundKey,".login",!this.isAdmin,!0),this.$nextTick(()=>{this.calculateLabelWidths()})},methods:{initFormData(){const e={};this.fields.forEach(t=>{e[t.key]=""}),this.formData=e,this.labelUnderlineWidths=new Array(this.fields.length).fill(0)},calculateLabelWidths(){this.$nextTick(()=>{this.fields.forEach((e,t)=>{const i=this.$refs[`inputLabel${t}`];if(i&&i[0]){const s=document.createElement("canvas"),n=s.getContext("2d"),a=i[0],o=window.getComputedStyle(a);n.font=`${o.fontWeight} ${o.fontSize} ${o.fontFamily}`;const l=n.measureText(e.label).width;this.labelUnderlineWidths[t]=Math.ceil(l)+3}})})},handleSubmit(){this.loading||this.$emit("submit",{...this.formData})},handleInputFocus(e){this.isFocused=!0;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.add("focused")}},handleInputBlur(e){this.isFocused=!1;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.remove("focused")}}}},L=i(1241);const v=(0,L.A)(w,[["render",b],["__scopeId","data-v-ddf8586a"]]);var F=v}}]); -//# sourceMappingURL=100.d39a82be.js.map \ No newline at end of file diff --git a/js/100.d39a82be.js.gz b/js/100.d39a82be.js.gz deleted file mode 100644 index 6f965f5..0000000 Binary files a/js/100.d39a82be.js.gz and /dev/null differ diff --git a/js/100.d39a82be.js.map b/js/100.d39a82be.js.map deleted file mode 100644 index 5956bff..0000000 --- a/js/100.d39a82be.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/100.d39a82be.js","mappings":"8LACO,SAASA,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMC,EAAuB,IAC7B,OAAO,WAAc,QAAaA,EAAsB,CACtDC,MAAOF,EAASG,WAChBC,OAAQL,EAAMM,YACd,cAAe,KACf,iBAAkB,aAClB,YAAY,EACZC,QAASP,EAAMQ,UACfC,SAAUR,EAASS,aAClB,KAAM,EAAG,CAAC,QAAS,SAAU,UAAW,YAC7C,C,kDCPA,GACE,IAAAC,GACE,MAAO,CACLH,WAAW,EACXF,YAAa,CAAC,CACZM,IAAK,WACLC,MAAO,KACPC,YAAa,SACbC,KAAM,WACNC,cAAc,EACdC,KAAM,SAGZ,EACAC,SAAU,KACL,QAAW,CAAC,eACf,SAAAC,GACE,OAAOC,KAAKC,YAAYF,WAAa,QACvC,EACA,UAAAf,GACE,MAAO,OAAOgB,KAAKD,cACrB,GAEFG,WAAY,CACVC,UAAS,KAEXC,QAAS,CACP,iBAAMd,CAAYe,GAChB,MAAM,SACJC,GACED,EACEE,EAA2B,KAAbD,EAAkB,QAAUA,EAChDN,KAAKZ,WAAY,EACjB,MAAMoB,EAAkB,IAAIC,QAAQC,GAAWC,WAAWD,EAAS,MAC7DE,EAAeC,EAAA,EAAMC,KAAK,aAAc,CAC5CC,SAAUT,IACTU,KAAKC,IAAO,CACbA,SACEC,MAAMC,IAAO,CACfA,SAEF,IACE,MAAOC,SAAgBX,QAAQY,IAAI,CAACT,EAAcJ,IAC9CY,EAAOH,KAA6B,MAAtBG,EAAOH,IAAIK,QAC3B,QAAY,WAAYf,EAAa,OACrCP,KAAKuB,QAAQC,KAAK,KAClBxB,KAAKyB,SAASC,QAAQ,UAGtB1B,KAAKZ,WAAY,EACjBY,KAAKyB,SAASE,MAAM,kBAExB,CAAE,MAAOR,GACPnB,KAAKZ,WAAY,EACjBY,KAAKyB,SAASE,MAAM,OACtB,CACF,I,UCxDJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASrD,KAEpE,O,uLCNA,MAAMsD,EAAa,CACjBC,MAAO,mBAEHC,EAAa,CACjBD,MAAO,cACPE,SAAU,KAENC,EAAa,CACjBH,MAAO,iBAEHI,EAAa,CACjB1C,IAAK,EACLsC,MAAO,gBAEHK,EAAa,CACjB3C,IAAK,GAEA,SAASjB,EAAOC,EAAMC,EAAQC,EAAQC,EAAQC,EAAOC,GAC1D,MAAMuD,EAAwB,IACxBC,EAAkB,IAClBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAuB,KACvBC,EAAoB,IAC1B,OAAO,WAAc,QAAoB,MAAO,CAC9CX,OAAO,QAAgB,CAAC,QAAS,CAC/B,aAAclD,EAAM8D,cAErB,EAAC,QAAaN,EAAuB,CACtCN,MAAO,iBACL,QAAaO,IAAkB,QAAoB,MAAOR,EAAY,EAAC,QAAoB,KAAME,GAAY,QAAiBrD,EAAOK,OAAQ,KAAK,SAAW,IAAO,QAAoB,KAAW,MAAM,QAAYL,EAAOO,OAAQ,CAAC0D,EAAOC,MACvO,WAAc,QAAoB,MAAO,CAC9CpD,IAAKmD,EAAMnD,IACXsC,MAAO,mBACN,EAAC,QAAoB,QAAS,CAC/BA,MAAO,aACPe,SAAS,EACTC,IAAK,aAAaF,IAClBG,OAAO,QAAgB,CACrB,oBAAqBnE,EAAMoE,qBAAqBJ,GAAS,SAE1D,QAAiBD,EAAMlD,OAAQ,IAAI,QAAoB,MAAOwC,EAAY,EAAC,QAAaM,EAAqB,CAC9GU,WAAYrE,EAAMyB,SAASsC,EAAMnD,KACjC,sBAAuB0D,GAAUtE,EAAMyB,SAASsC,EAAMnD,KAAO0D,EAC7DxD,YAAaiD,EAAMjD,YACnBC,KAAMgD,EAAMhD,MAAQ,OACpB,gBAAiBgD,EAAM/C,aACvBkC,MAAO,iBACPqB,SAAS,QAAUtE,EAASuE,aAAc,CAAC,QAAS,WACpDC,QAASxE,EAASyE,iBAClBC,OAAQ1E,EAAS2E,kBAChB,QAAa,CACdC,EAAG,GACF,CAACd,EAAM9C,KAAO,CACf6D,KAAM,SACNC,IAAI,QAAS,IAAM,EAAC,QAAarB,EAAoB,CACnDR,MAAO,kBACN,CACD8B,SAAS,QAAS,IAAM,GAAE,WAAc,SAAa,QAAyBjB,EAAM9C,UACpF4D,EAAG,GACF,QACHjE,IAAK,UACHqE,IAAa,KAAM,CAAC,aAAc,sBAAuB,cAAe,OAAQ,gBAAiB,UAAW,UAAW,iBACzH,OAAO,QAAarB,EAAsB,CAC5CV,OAAO,QAAgB,CAAC,SAAU,CAChC,aAAcpD,EAAOS,WAEvBQ,KAAM,UACNmE,QAASjF,EAASuE,aAClBW,SAAUrF,EAAOS,SAChB,CACDyE,SAAS,QAAS,IAAM,CAAClF,EAAOS,UAAW,WAAc,QAAoB,MAAO+C,MAAgB,WAAc,QAAoB,OAAQC,GAAY,QAAiBzD,EAAOsF,YAAa,MAC/LP,EAAG,GACF,EAAG,CAAC,QAAS,UAAW,gBAAgB,QAAahB,EAAmB,CACzEX,MAAO,YACJ,EACP,C,wCCtEA,GACE4B,KAAM,YACNO,OAAQ,CAACC,EAAA,GACTC,MAAO,CAELpF,MAAO,CACLY,KAAMyE,OACNC,UAAU,GAGZpF,OAAQ,CACNU,KAAM2E,MACND,UAAU,GAIZL,WAAY,CACVrE,KAAMyE,OACNR,QAAS,MAGXW,cAAe,CACb5E,KAAMyE,OACNC,UAAU,GAGZG,QAAS,CACP7E,KAAM8E,QACNb,SAAS,GAGXzE,QAAS,CACPQ,KAAM8E,QACNb,SAAS,IAGb,IAAArE,GACE,MAAO,CACLc,SAAU,CAAC,EACX2C,qBAAsB,GACtBN,WAAW,EAEf,EACA5C,SAAU,KACL,QAAW,CAAC,gBAEjB4E,MAAO,CACLzF,OAAQ,CACN,OAAA0F,GACE3E,KAAK4E,UAAU,KACb5E,KAAK6E,wBAET,EACAC,MAAM,IAGV5E,WAAY,CACV6E,OAAM,IACNC,WAAU,IACVC,KAAI,KAEN,OAAAC,GAEElF,KAAKmF,eAELnF,KAAKoF,qBAAqBpF,KAAKuE,cAAe,UAAWvE,KAAKwE,SAAS,GAEvExE,KAAK4E,UAAU,KACb5E,KAAK6E,wBAET,EACAzE,QAAS,CACP,YAAA+E,GAEE,MAAME,EAAc,CAAC,EACrBrF,KAAKf,OAAOqG,QAAQ3C,IAClB0C,EAAY1C,EAAMnD,KAAO,KAE3BQ,KAAKK,SAAWgF,EAEhBrF,KAAKgD,qBAAuB,IAAIsB,MAAMtE,KAAKf,OAAOsG,QAAQC,KAAK,EACjE,EACA,oBAAAX,GAEE7E,KAAK4E,UAAU,KACb5E,KAAKf,OAAOqG,QAAQ,CAAC3C,EAAOC,KAC1B,MAAM6C,EAAWzF,KAAK0F,MAAM,aAAa9C,KACzC,GAAI6C,GAAYA,EAAS,GAAI,CAE3B,MAAME,EAASC,SAASC,cAAc,UAChCC,EAAUH,EAAOI,WAAW,MAG5BC,EAAeP,EAAS,GACxBQ,EAAgBC,OAAOC,iBAAiBH,GAG9CF,EAAQM,KAAO,GAAGH,EAAcI,cAAcJ,EAAcK,YAAYL,EAAcM,aAGtF,MAAMC,EAAYV,EAAQW,YAAY9D,EAAMlD,OAAOiH,MAGnD1G,KAAKgD,qBAAqBJ,GAAS+D,KAAKC,KAAKJ,GAAa,CAC5D,KAGN,EACA,YAAApD,GACMpD,KAAKb,SAETa,KAAK6G,MAAM,SAAU,IAChB7G,KAAKK,UAEZ,EACA,gBAAAiD,CAAiBwD,GACf9G,KAAK0C,WAAY,EACjB,MAAMqE,EAAYD,EAAME,OAAOC,QAAQ,oBACvC,GAAIF,EAAW,CACb,MAAMG,EAAUH,EAAUI,cAAc,kBACpCD,GACFA,EAAQE,UAAUC,IAAI,UAE1B,CACF,EACA,eAAA7D,CAAgBsD,GACd9G,KAAK0C,WAAY,EACjB,MAAMqE,EAAYD,EAAME,OAAOC,QAAQ,oBACvC,GAAIF,EAAW,CACb,MAAMG,EAAUH,EAAUI,cAAc,kBACpCD,GACFA,EAAQE,UAAUE,OAAO,UAE7B,CACF,I,UCtIJ,MAAM1F,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASrD,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://sanyue_imghub/./src/views/Login.vue?2710","webpack://sanyue_imghub/./src/views/Login.vue","webpack://sanyue_imghub/./src/views/Login.vue?2b97","webpack://sanyue_imghub/./src/components/BaseLogin.vue?2bff","webpack://sanyue_imghub/./src/components/BaseLogin.vue","webpack://sanyue_imghub/./src/components/BaseLogin.vue?0ac4"],"sourcesContent":["import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_BaseLogin = _resolveComponent(\"BaseLogin\");\n return _openBlock(), _createBlock(_component_BaseLogin, {\n title: $options.loginTitle,\n fields: $data.loginFields,\n \"submit-text\": \"登录\",\n \"background-key\": \"loginBkImg\",\n \"is-admin\": false,\n loading: $data.isLoading,\n onSubmit: $options.handleLogin\n }, null, 8, [\"title\", \"fields\", \"loading\", \"onSubmit\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport cookies from 'vue-cookies';\nimport axios from '@/utils/axios';\nimport { mapGetters } from 'vuex';\nimport BaseLogin from '@/components/BaseLogin.vue';\nexport default {\n data() {\n return {\n isLoading: false,\n loginFields: [{\n key: 'password',\n label: '密码',\n placeholder: '请输入认证码',\n type: 'password',\n showPassword: true,\n icon: 'Lock'\n }]\n };\n },\n computed: {\n ...mapGetters(['userConfig']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n loginTitle() {\n return `登录到 ${this.ownerName} 图床`;\n }\n },\n components: {\n BaseLogin\n },\n methods: {\n async handleLogin(formData) {\n const {\n password\n } = formData;\n const writtenPass = password === '' ? 'unset' : password;\n this.isLoading = true;\n const minDelayPromise = new Promise(resolve => setTimeout(resolve, 500));\n const loginPromise = axios.post('/api/login', {\n authCode: password\n }).then(res => ({\n res\n })).catch(err => ({\n err\n }));\n try {\n const [result] = await Promise.all([loginPromise, minDelayPromise]);\n if (result.res && result.res.status === 200) {\n cookies.set('authCode', writtenPass, '14d');\n this.$router.push('/');\n this.$message.success('登录成功');\n // Keep loading true to show animation relative to redirect\n } else {\n this.isLoading = false;\n this.$message.error('登录失败,请检查密码是否正确');\n }\n } catch (err) {\n this.isLoading = false;\n this.$message.error('系统错误');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./Login.vue?vue&type=template&id=76102d34\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.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 { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, withCtx as _withCtx, withKeys as _withKeys, createSlots as _createSlots, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"login-container\"\n};\nconst _hoisted_2 = {\n class: \"login-title\",\n tabindex: \"0\"\n};\nconst _hoisted_3 = {\n class: \"input-wrapper\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"loading-ring\"\n};\nconst _hoisted_5 = {\n key: 1\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_Footer = _resolveComponent(\"Footer\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"login\", {\n 'is-focused': $data.isFocused\n }])\n }, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark\"\n }), _createVNode(_component_Logo), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"h1\", _hoisted_2, _toDisplayString($props.title), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.fields, (field, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: field.key,\n class: \"input-container\"\n }, [_createElementVNode(\"label\", {\n class: \"input-name\",\n ref_for: true,\n ref: `inputLabel${index}`,\n style: _normalizeStyle({\n '--underline-width': $data.labelUnderlineWidths[index] + 'px'\n })\n }, _toDisplayString(field.label), 5), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.formData[field.key],\n \"onUpdate:modelValue\": $event => $data.formData[field.key] = $event,\n placeholder: field.placeholder,\n type: field.type || 'text',\n \"show-password\": field.showPassword,\n class: \"password-input\",\n onKeyup: _withKeys($options.handleSubmit, [\"enter\", \"native\"]),\n onFocus: $options.handleInputFocus,\n onBlur: $options.handleInputBlur\n }, _createSlots({\n _: 2\n }, [field.icon ? {\n name: \"prefix\",\n fn: _withCtx(() => [_createVNode(_component_el_icon, {\n class: \"el-input__icon\"\n }, {\n default: _withCtx(() => [(_openBlock(), _createBlock(_resolveDynamicComponent(field.icon)))]),\n _: 2\n }, 1024)]),\n key: \"0\"\n } : undefined]), 1032, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\", \"type\", \"show-password\", \"onKeyup\", \"onFocus\", \"onBlur\"])])]);\n }), 128)), _createVNode(_component_el_button, {\n class: _normalizeClass([\"submit\", {\n 'is-loading': $props.loading\n }]),\n type: \"primary\",\n onClick: $options.handleSubmit,\n disabled: $props.loading\n }, {\n default: _withCtx(() => [$props.loading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString($props.submitText), 1))]),\n _: 1\n }, 8, [\"class\", \"onClick\", \"disabled\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n })], 2);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BaseLogin',\n mixins: [backgroundManager],\n props: {\n // 页面标题\n title: {\n type: String,\n required: true\n },\n // 输入字段配置\n fields: {\n type: Array,\n required: true\n // fields 格式: [{ key: 'username', label: '用户名', placeholder: '请输入用户名', type: 'text', showPassword: false }]\n },\n // 提交按钮文本\n submitText: {\n type: String,\n default: '登录'\n },\n // 背景图配置键名\n backgroundKey: {\n type: String,\n required: true\n },\n // 是否为管理端登录(影响背景样式)\n isAdmin: {\n type: Boolean,\n default: false\n },\n // 是否正在加载\n loading: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n formData: {},\n labelUnderlineWidths: [],\n isFocused: false\n };\n },\n computed: {\n ...mapGetters(['userConfig'])\n },\n watch: {\n fields: {\n handler() {\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n },\n deep: true\n }\n },\n components: {\n Footer,\n ToggleDark,\n Logo\n },\n mounted() {\n // 初始化表单数据\n this.initFormData();\n // 初始化背景图\n this.initializeBackground(this.backgroundKey, '.login', !this.isAdmin, true);\n // 在下一个tick计算标签宽度,确保DOM已经渲染\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n },\n methods: {\n initFormData() {\n // 根据字段配置初始化表单数据\n const newFormData = {};\n this.fields.forEach(field => {\n newFormData[field.key] = '';\n });\n this.formData = newFormData;\n // 初始化下划线宽度数组\n this.labelUnderlineWidths = new Array(this.fields.length).fill(0);\n },\n calculateLabelWidths() {\n // 计算每个标签的文字宽度\n this.$nextTick(() => {\n this.fields.forEach((field, index) => {\n const labelRef = this.$refs[`inputLabel${index}`];\n if (labelRef && labelRef[0]) {\n // 创建一个临时的canvas来测量文字宽度\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n // 获取标签的计算样式\n const labelElement = labelRef[0];\n const computedStyle = window.getComputedStyle(labelElement);\n\n // 设置font样式以匹配标签\n context.font = `${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;\n\n // 测量文字宽度\n const textWidth = context.measureText(field.label).width;\n\n // 添加一些额外的边距,确保下划线覆盖整个文字\n this.labelUnderlineWidths[index] = Math.ceil(textWidth) + 3;\n }\n });\n });\n },\n handleSubmit() {\n if (this.loading) return;\n // 触发父组件的提交事件,传递表单数据\n this.$emit('submit', {\n ...this.formData\n });\n },\n handleInputFocus(event) {\n this.isFocused = true;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.add('focused');\n }\n }\n },\n handleInputBlur(event) {\n this.isFocused = false;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.remove('focused');\n }\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BaseLogin.vue?vue&type=template&id=ddf8586a&scoped=true\"\nimport script from \"./BaseLogin.vue?vue&type=script&lang=js\"\nexport * from \"./BaseLogin.vue?vue&type=script&lang=js\"\n\nimport \"./BaseLogin.vue?vue&type=style&index=0&id=ddf8586a&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-ddf8586a\"]])\n\nexport default __exports__"],"names":["render","_ctx","_cache","$props","$setup","$data","$options","_component_BaseLogin","title","loginTitle","fields","loginFields","loading","isLoading","onSubmit","handleLogin","data","key","label","placeholder","type","showPassword","icon","computed","ownerName","this","userConfig","components","BaseLogin","methods","formData","password","writtenPass","minDelayPromise","Promise","resolve","setTimeout","loginPromise","axios","post","authCode","then","res","catch","err","result","all","status","$router","push","$message","success","error","__exports__","_hoisted_1","class","_hoisted_2","tabindex","_hoisted_3","_hoisted_4","_hoisted_5","_component_ToggleDark","_component_Logo","_component_el_icon","_component_el_input","_component_el_button","_component_Footer","isFocused","field","index","ref_for","ref","style","labelUnderlineWidths","modelValue","$event","onKeyup","handleSubmit","onFocus","handleInputFocus","onBlur","handleInputBlur","_","name","fn","default","undefined","onClick","disabled","submitText","mixins","backgroundManager","props","String","required","Array","backgroundKey","isAdmin","Boolean","watch","handler","$nextTick","calculateLabelWidths","deep","Footer","ToggleDark","Logo","mounted","initFormData","initializeBackground","newFormData","forEach","length","fill","labelRef","$refs","canvas","document","createElement","context","getContext","labelElement","computedStyle","window","getComputedStyle","font","fontWeight","fontSize","fontFamily","textWidth","measureText","width","Math","ceil","$emit","event","container","target","closest","wrapper","querySelector","classList","add","remove"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/100.d39a82be.js.map.gz b/js/100.d39a82be.js.map.gz deleted file mode 100644 index 65a836a..0000000 Binary files a/js/100.d39a82be.js.map.gz and /dev/null differ diff --git a/js/214.8d11f725.js b/js/214.8d11f725.js deleted file mode 100644 index 82c20cc..0000000 --- a/js/214.8d11f725.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[214],{2619:function(e,t,s){s.d(t,{A:function(){return F}});var i=s(6975),n=s(47),a=(s(5331),s(9648),s(9623)),o=(s(6711),s(813)),l=(s(4896),s(732)),r=s(4453),d=s(6768),u=s(4232),c=s(5130);const h={class:"login-container"},p={class:"login-title",tabindex:"0"},m={class:"input-wrapper"},g={key:0,class:"loading-ring"},f={key:1};function b(e,t,s,b,y,k){const w=r.A,L=l.A,v=o.tk,F=a.WK,$=n.S2,A=i.A;return(0,d.uX)(),(0,d.CE)("div",{class:(0,u.C4)(["login",{"is-focused":y.isFocused}])},[(0,d.bF)(w,{class:"toggle-dark"}),(0,d.bF)(L),(0,d.Lk)("div",h,[(0,d.Lk)("h1",p,(0,u.v_)(s.title),1),((0,d.uX)(!0),(0,d.CE)(d.FK,null,(0,d.pI)(s.fields,(e,t)=>((0,d.uX)(),(0,d.CE)("div",{key:e.key,class:"input-container"},[(0,d.Lk)("label",{class:"input-name",ref_for:!0,ref:`inputLabel${t}`,style:(0,u.Tr)({"--underline-width":y.labelUnderlineWidths[t]+"px"})},(0,u.v_)(e.label),5),(0,d.Lk)("div",m,[(0,d.bF)(F,{modelValue:y.formData[e.key],"onUpdate:modelValue":t=>y.formData[e.key]=t,placeholder:e.placeholder,type:e.type||"text","show-password":e.showPassword,class:"password-input",onKeyup:(0,c.jR)(k.handleSubmit,["enter","native"]),onFocus:k.handleInputFocus,onBlur:k.handleInputBlur},(0,d.eX)({_:2},[e.icon?{name:"prefix",fn:(0,d.k6)(()=>[(0,d.bF)(v,{class:"el-input__icon"},{default:(0,d.k6)(()=>[((0,d.uX)(),(0,d.Wv)((0,d.$y)(e.icon)))]),_:2},1024)]),key:"0"}:void 0]),1032,["modelValue","onUpdate:modelValue","placeholder","type","show-password","onKeyup","onFocus","onBlur"])])]))),128)),(0,d.bF)($,{class:(0,u.C4)(["submit",{"is-loading":s.loading}]),type:"primary",onClick:k.handleSubmit,disabled:s.loading},{default:(0,d.k6)(()=>[s.loading?((0,d.uX)(),(0,d.CE)("div",g)):((0,d.uX)(),(0,d.CE)("span",f,(0,u.v_)(s.submitText),1))]),_:1},8,["class","onClick","disabled"])]),(0,d.bF)(A,{class:"footer"})],2)}s(8111),s(7588);var y=s(8401),k=s(8903),w={name:"BaseLogin",mixins:[k.A],props:{title:{type:String,required:!0},fields:{type:Array,required:!0},submitText:{type:String,default:"登录"},backgroundKey:{type:String,required:!0},isAdmin:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},data(){return{formData:{},labelUnderlineWidths:[],isFocused:!1}},computed:{...(0,y.L8)(["userConfig"])},watch:{fields:{handler(){this.$nextTick(()=>{this.calculateLabelWidths()})},deep:!0}},components:{Footer:i.A,ToggleDark:r.A,Logo:l.A},mounted(){this.initFormData(),this.initializeBackground(this.backgroundKey,".login",!this.isAdmin,!0),this.$nextTick(()=>{this.calculateLabelWidths()})},methods:{initFormData(){const e={};this.fields.forEach(t=>{e[t.key]=""}),this.formData=e,this.labelUnderlineWidths=new Array(this.fields.length).fill(0)},calculateLabelWidths(){this.$nextTick(()=>{this.fields.forEach((e,t)=>{const s=this.$refs[`inputLabel${t}`];if(s&&s[0]){const i=document.createElement("canvas"),n=i.getContext("2d"),a=s[0],o=window.getComputedStyle(a);n.font=`${o.fontWeight} ${o.fontSize} ${o.fontFamily}`;const l=n.measureText(e.label).width;this.labelUnderlineWidths[t]=Math.ceil(l)+3}})})},handleSubmit(){this.loading||this.$emit("submit",{...this.formData})},handleInputFocus(e){this.isFocused=!0;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.add("focused")}},handleInputBlur(e){this.isFocused=!1;const t=e.target.closest(".input-container");if(t){const e=t.querySelector(".input-wrapper");e&&e.classList.remove("focused")}}}},L=s(1241);const v=(0,L.A)(w,[["render",b],["__scopeId","data-v-ddf8586a"]]);var F=v},3950:function(e,t,s){s.r(t),s.d(t,{default:function(){return u}});var i=s(2619),n=s(6768);function a(e,t,s,a,o,l){const r=i.A;return(0,n.uX)(),(0,n.Wv)(r,{title:"管理端登录",fields:o.loginFields,"submit-text":"登录","background-key":"adminLoginBkImg","is-admin":!0,loading:o.isLoading,onSubmit:l.handleLogin},null,8,["fields","loading","onSubmit"])}s(4114),s(4979);var o=s(457),l={data(){return{isLoading:!1,loginFields:[{key:"username",label:"用户名",placeholder:"请输入用户名",type:"text",icon:"User"},{key:"password",label:"密码",placeholder:"请输入密码",type:"password",showPassword:!0,icon:"Lock"}]}},components:{BaseLogin:i.A},methods:{async handleLogin(e){const{username:t,password:s}=e,i=btoa(`${t}:${s}`);this.isLoading=!0;const n=new Promise(e=>setTimeout(e,1e3)),a=o.A.get("/api/manage/check",{headers:{Authorization:`Basic ${i}`},withCredentials:!0}).then(e=>({response:e})).catch(e=>({error:e}));try{const[e]=await Promise.all([a,n]);if(e.response&&200===e.response.status)this.$store.commit("setCredentials",i),this.$router.push("/dashboard");else{const t=e.error||new Error("Unknown error");this.isLoading=!1,t.response&&401===t.response.status?this.$message.error("用户名或密码错误"):this.$message.error("服务器错误")}}catch(l){this.isLoading=!1,this.$message.error("系统错误")}}}},r=s(1241);const d=(0,r.A)(l,[["render",a]]);var u=d}}]); -//# sourceMappingURL=214.8d11f725.js.map \ No newline at end of file diff --git a/js/214.8d11f725.js.gz b/js/214.8d11f725.js.gz deleted file mode 100644 index af8813e..0000000 Binary files a/js/214.8d11f725.js.gz and /dev/null differ diff --git a/js/214.8d11f725.js.map b/js/214.8d11f725.js.map deleted file mode 100644 index dad350b..0000000 --- a/js/214.8d11f725.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/214.8d11f725.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/components/BaseLogin.vue?2bff","webpack://sanyue_imghub/./src/components/BaseLogin.vue","webpack://sanyue_imghub/./src/components/BaseLogin.vue?0ac4","webpack://sanyue_imghub/./src/views/AdminLogin.vue?1f0e","webpack://sanyue_imghub/./src/views/AdminLogin.vue","webpack://sanyue_imghub/./src/views/AdminLogin.vue?06e1"],"sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeStyle as _normalizeStyle, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, withCtx as _withCtx, withKeys as _withKeys, createSlots as _createSlots, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"login-container\"\n};\nconst _hoisted_2 = {\n class: \"login-title\",\n tabindex: \"0\"\n};\nconst _hoisted_3 = {\n class: \"input-wrapper\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"loading-ring\"\n};\nconst _hoisted_5 = {\n key: 1\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_Footer = _resolveComponent(\"Footer\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"login\", {\n 'is-focused': $data.isFocused\n }])\n }, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark\"\n }), _createVNode(_component_Logo), _createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"h1\", _hoisted_2, _toDisplayString($props.title), 1), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.fields, (field, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: field.key,\n class: \"input-container\"\n }, [_createElementVNode(\"label\", {\n class: \"input-name\",\n ref_for: true,\n ref: `inputLabel${index}`,\n style: _normalizeStyle({\n '--underline-width': $data.labelUnderlineWidths[index] + 'px'\n })\n }, _toDisplayString(field.label), 5), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_input, {\n modelValue: $data.formData[field.key],\n \"onUpdate:modelValue\": $event => $data.formData[field.key] = $event,\n placeholder: field.placeholder,\n type: field.type || 'text',\n \"show-password\": field.showPassword,\n class: \"password-input\",\n onKeyup: _withKeys($options.handleSubmit, [\"enter\", \"native\"]),\n onFocus: $options.handleInputFocus,\n onBlur: $options.handleInputBlur\n }, _createSlots({\n _: 2\n }, [field.icon ? {\n name: \"prefix\",\n fn: _withCtx(() => [_createVNode(_component_el_icon, {\n class: \"el-input__icon\"\n }, {\n default: _withCtx(() => [(_openBlock(), _createBlock(_resolveDynamicComponent(field.icon)))]),\n _: 2\n }, 1024)]),\n key: \"0\"\n } : undefined]), 1032, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\", \"type\", \"show-password\", \"onKeyup\", \"onFocus\", \"onBlur\"])])]);\n }), 128)), _createVNode(_component_el_button, {\n class: _normalizeClass([\"submit\", {\n 'is-loading': $props.loading\n }]),\n type: \"primary\",\n onClick: $options.handleSubmit,\n disabled: $props.loading\n }, {\n default: _withCtx(() => [$props.loading ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4)) : (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString($props.submitText), 1))]),\n _: 1\n }, 8, [\"class\", \"onClick\", \"disabled\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n })], 2);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'BaseLogin',\n mixins: [backgroundManager],\n props: {\n // 页面标题\n title: {\n type: String,\n required: true\n },\n // 输入字段配置\n fields: {\n type: Array,\n required: true\n // fields 格式: [{ key: 'username', label: '用户名', placeholder: '请输入用户名', type: 'text', showPassword: false }]\n },\n // 提交按钮文本\n submitText: {\n type: String,\n default: '登录'\n },\n // 背景图配置键名\n backgroundKey: {\n type: String,\n required: true\n },\n // 是否为管理端登录(影响背景样式)\n isAdmin: {\n type: Boolean,\n default: false\n },\n // 是否正在加载\n loading: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n formData: {},\n labelUnderlineWidths: [],\n isFocused: false\n };\n },\n computed: {\n ...mapGetters(['userConfig'])\n },\n watch: {\n fields: {\n handler() {\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n },\n deep: true\n }\n },\n components: {\n Footer,\n ToggleDark,\n Logo\n },\n mounted() {\n // 初始化表单数据\n this.initFormData();\n // 初始化背景图\n this.initializeBackground(this.backgroundKey, '.login', !this.isAdmin, true);\n // 在下一个tick计算标签宽度,确保DOM已经渲染\n this.$nextTick(() => {\n this.calculateLabelWidths();\n });\n },\n methods: {\n initFormData() {\n // 根据字段配置初始化表单数据\n const newFormData = {};\n this.fields.forEach(field => {\n newFormData[field.key] = '';\n });\n this.formData = newFormData;\n // 初始化下划线宽度数组\n this.labelUnderlineWidths = new Array(this.fields.length).fill(0);\n },\n calculateLabelWidths() {\n // 计算每个标签的文字宽度\n this.$nextTick(() => {\n this.fields.forEach((field, index) => {\n const labelRef = this.$refs[`inputLabel${index}`];\n if (labelRef && labelRef[0]) {\n // 创建一个临时的canvas来测量文字宽度\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n // 获取标签的计算样式\n const labelElement = labelRef[0];\n const computedStyle = window.getComputedStyle(labelElement);\n\n // 设置font样式以匹配标签\n context.font = `${computedStyle.fontWeight} ${computedStyle.fontSize} ${computedStyle.fontFamily}`;\n\n // 测量文字宽度\n const textWidth = context.measureText(field.label).width;\n\n // 添加一些额外的边距,确保下划线覆盖整个文字\n this.labelUnderlineWidths[index] = Math.ceil(textWidth) + 3;\n }\n });\n });\n },\n handleSubmit() {\n if (this.loading) return;\n // 触发父组件的提交事件,传递表单数据\n this.$emit('submit', {\n ...this.formData\n });\n },\n handleInputFocus(event) {\n this.isFocused = true;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.add('focused');\n }\n }\n },\n handleInputBlur(event) {\n this.isFocused = false;\n const container = event.target.closest('.input-container');\n if (container) {\n const wrapper = container.querySelector('.input-wrapper');\n if (wrapper) {\n wrapper.classList.remove('focused');\n }\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./BaseLogin.vue?vue&type=template&id=ddf8586a&scoped=true\"\nimport script from \"./BaseLogin.vue?vue&type=script&lang=js\"\nexport * from \"./BaseLogin.vue?vue&type=script&lang=js\"\n\nimport \"./BaseLogin.vue?vue&type=style&index=0&id=ddf8586a&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-ddf8586a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_BaseLogin = _resolveComponent(\"BaseLogin\");\n return _openBlock(), _createBlock(_component_BaseLogin, {\n title: \"管理端登录\",\n fields: $data.loginFields,\n \"submit-text\": \"登录\",\n \"background-key\": \"adminLoginBkImg\",\n \"is-admin\": true,\n loading: $data.isLoading,\n onSubmit: $options.handleLogin\n }, null, 8, [\"fields\", \"loading\", \"onSubmit\"]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport BaseLogin from '@/components/BaseLogin.vue';\nimport axios from '@/utils/axios';\nexport default {\n data() {\n return {\n isLoading: false,\n loginFields: [{\n key: 'username',\n label: '用户名',\n placeholder: '请输入用户名',\n type: 'text',\n icon: 'User'\n }, {\n key: 'password',\n label: '密码',\n placeholder: '请输入密码',\n type: 'password',\n showPassword: true,\n icon: 'Lock'\n }]\n };\n },\n components: {\n BaseLogin\n },\n methods: {\n async handleLogin(formData) {\n const {\n username,\n password\n } = formData;\n const credentials = btoa(`${username}:${password}`); // Base64 编码\n\n this.isLoading = true;\n\n // Min delay promise\n const minDelayPromise = new Promise(resolve => setTimeout(resolve, 1000));\n // Request promise handling its own error to return it\n const loginPromise = axios.get('/api/manage/check', {\n headers: {\n 'Authorization': `Basic ${credentials}`\n },\n withCredentials: true\n }).then(response => ({\n response\n })).catch(error => ({\n error\n }));\n try {\n const [result] = await Promise.all([loginPromise, minDelayPromise]);\n if (result.response && result.response.status === 200) {\n // 认证成功,存储认证信息,跳转到管理页面\n this.$store.commit('setCredentials', credentials);\n this.$router.push('/dashboard');\n } else {\n const error = result.error || new Error('Unknown error');\n this.isLoading = false;\n if (error.response && error.response.status === 401) {\n this.$message.error('用户名或密码错误');\n } else {\n this.$message.error('服务器错误');\n }\n }\n } catch (error) {\n // Should not reach here due to inner catch, but just in case\n this.isLoading = false;\n this.$message.error('系统错误');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminLogin.vue?vue&type=template&id=bc2c2164\"\nimport script from \"./AdminLogin.vue?vue&type=script&lang=js\"\nexport * from \"./AdminLogin.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__"],"names":["_hoisted_1","class","_hoisted_2","tabindex","_hoisted_3","_hoisted_4","key","_hoisted_5","render","_ctx","_cache","$props","$setup","$data","$options","_component_ToggleDark","_component_Logo","_component_el_icon","_component_el_input","_component_el_button","_component_Footer","isFocused","title","fields","field","index","ref_for","ref","style","labelUnderlineWidths","label","modelValue","formData","$event","placeholder","type","showPassword","onKeyup","handleSubmit","onFocus","handleInputFocus","onBlur","handleInputBlur","_","icon","name","fn","default","undefined","loading","onClick","disabled","submitText","mixins","backgroundManager","props","String","required","Array","backgroundKey","isAdmin","Boolean","data","computed","watch","handler","this","$nextTick","calculateLabelWidths","deep","components","Footer","ToggleDark","Logo","mounted","initFormData","initializeBackground","methods","newFormData","forEach","length","fill","labelRef","$refs","canvas","document","createElement","context","getContext","labelElement","computedStyle","window","getComputedStyle","font","fontWeight","fontSize","fontFamily","textWidth","measureText","width","Math","ceil","$emit","event","container","target","closest","wrapper","querySelector","classList","add","remove","__exports__","_component_BaseLogin","loginFields","isLoading","onSubmit","handleLogin","BaseLogin","username","password","credentials","btoa","minDelayPromise","Promise","resolve","setTimeout","loginPromise","axios","get","headers","withCredentials","then","response","catch","error","result","all","status","$store","commit","$router","push","Error","$message"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/214.8d11f725.js.map.gz b/js/214.8d11f725.js.map.gz deleted file mode 100644 index f965c2e..0000000 Binary files a/js/214.8d11f725.js.map.gz and /dev/null differ diff --git a/js/226.f737e39a.js b/js/226.f737e39a.js deleted file mode 100644 index 6d5cd9c..0000000 --- a/js/226.f737e39a.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[226],{6682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"},7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},8226:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(47),i=(a(5331),a(9648),a(6768));const s={class:"not-found-container"},o=["innerHTML"],r={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},h={class:"help-links"},p={class:"quick-links"};function k(e,t,a,k,b,y){const f=(0,i.g2)("font-awesome-icon"),v=n.S2;return(0,i.uX)(),(0,i.CE)("div",s,[(0,i.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,i.Lk)("div",r,[(0,i.Lk)("div",l,[(0,i.bF)(v,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{icon:"home"})]),_:1},8,["onClick"])]),(0,i.Lk)("div",c,[t[3]||(t[3]=(0,i.Lk)("div",{class:"error-number"},[(0,i.Lk)("span",{class:"four"},"4"),(0,i.Lk)("span",{class:"zero"},"0"),(0,i.Lk)("span",{class:"four"},"4")],-1)),(0,i.Lk)("div",d,[(0,i.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,i.Lk)("div",g,[t[10]||(t[10]=(0,i.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,i.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,i.Lk)("div",m,[(0,i.bF)(v,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,i.k6)(()=>[(0,i.bF)(f,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,i.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,i.bF)(v,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,i.k6)(()=>[(0,i.bF)(f,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,i.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,i.Lk)("div",h,[t[9]||(t[9]=(0,i.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,i.Lk)("div",p,[(0,i.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,i.bF)(f,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,i.eW)(" 图片上传 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,i.bF)(f,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,i.eW)(" 管理面板 ",-1))]),(0,i.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,i.bF)(f,{icon:"redo"}),t[8]||(t[8]=(0,i.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,i.Fv)('
',1))])}a(4114);var b=a(8401),y=a(8903),f={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(6682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},v=a(1241);const I=(0,v.A)(f,[["render",k],["__scopeId","data-v-5437e264"]]);var B=I},8351:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},8903:function(e,t,a){var n=a(8401);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n opacity: 0;\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n opacity: 0;\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){if(this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n},n){const e=document.querySelector(t);!e||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(e)}const i=document.getElementById("bg1"),s=document.getElementById("bg2");if(!i||!s)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const o=this.userConfig?.[e];"bing"===o?this.setupBingWallpaper(i,s,t):Array.isArray(o)&&o.length>1?this.setupCustomWallpaperCarousel(i,s,o,t):Array.isArray(o)&&1===o.length?this.setupSingleCustomWallpaper(i,o[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,i=a(n?8351:7835);this.loadBackgroundImage(e,i,t)},loadBackgroundImage(e,t,a){e.src=t,e.onload=()=>{e.style.opacity=this.bkOpacity;const t=document.querySelector(a);t&&(t.style.background="transparent")}},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity?e:t,n=0!=e.style.opacity?t:e;a.style.opacity=0,this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length,n.src=this.bingWallPapers[this.bingWallPaperIndex]?.url,n.onload=()=>{n.style.opacity=this.bkOpacity}},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity?e:t,i=0!=e.style.opacity?t:e;n.style.opacity=0,this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length,i.src=a[this.customWallPaperIndex],i.onload=()=>{i.style.opacity=this.bkOpacity}},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},800)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},800)))},smoothThemeTransition(e,t=".login",n=!1,i=!1){const s=this.userConfig?.[e];if(!n||void 0!==s)return void this.reinitializeBackground(e,t,n,i);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,i);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?8351:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity;const e=document.querySelector(t);e&&(e.style.background="transparent")},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,i)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}}}]); -//# sourceMappingURL=226.f737e39a.js.map \ No newline at end of file diff --git a/js/226.f737e39a.js.gz b/js/226.f737e39a.js.gz deleted file mode 100644 index 55a51c9..0000000 Binary files a/js/226.f737e39a.js.gz and /dev/null differ diff --git a/js/226.f737e39a.js.map b/js/226.f737e39a.js.map deleted file mode 100644 index 6e6aa8c..0000000 --- a/js/226.f737e39a.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/226.f737e39a.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/NotFound.vue?1f11","webpack://sanyue_imghub/./src/views/NotFound.vue","webpack://sanyue_imghub/./src/views/NotFound.vue?5f0d","webpack://sanyue_imghub/./src/mixins/backgroundManager.js"],"sourcesContent":["import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=5437e264&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=5437e264&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-5437e264\"]])\n\nexport default __exports__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n opacity: 0;\r\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n opacity: 0;\r\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n if (autoCreateElements) {\r\n const container = document.querySelector(containerSelector)\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n imgElement.src = imageSrc\r\n imgElement.onload = () => {\r\n imgElement.style.opacity = this.bkOpacity\r\n // 设置容器背景为透明\r\n const container = document.querySelector(containerSelector)\r\n if (container) {\r\n container.style.background = 'transparent'\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const curBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n \r\n curBg.style.opacity = 0\r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n \r\n nextBg.src = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n nextBg.onload = () => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const curBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n \r\n curBg.style.opacity = 0\r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n \r\n nextBg.src = wallpapers[this.customWallPaperIndex]\r\n nextBg.onload = () => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 800) // 等待过渡完成后清除src\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 800) // 等待过渡完成后清除src\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n \r\n // 设置容器背景为透明\r\n const container = document.querySelector(containerSelector)\r\n if (container) {\r\n container.style.background = 'transparent'\r\n }\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","backgroundImagesTemplate","onClick","goHome","circle","size","default","icon","_","src","errorImage","alt","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","computed","mounted","this","initializeBackground","beforeUnmount","clearBackgroundInterval","methods","$router","push","window","history","length","go","location","reload","__exports__","data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","userConfig","bkOpacity","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","injectBackgroundStyles","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","bg2","insertBefore","firstChild","querySelector","backgroundConfig","setupBingWallpaper","Array","isArray","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","onload","opacity","background","curBg","nextBg","immediate","transition","setTimeout","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","Image","onerror"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/226.f737e39a.js.map.gz b/js/226.f737e39a.js.map.gz deleted file mode 100644 index 322b5b7..0000000 Binary files a/js/226.f737e39a.js.map.gz and /dev/null differ diff --git a/js/239.3f72b765.js b/js/239.3f72b765.js deleted file mode 100644 index 401ec95..0000000 --- a/js/239.3f72b765.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[239],{200:function(e,t,o){o(5331)},213:function(e,t,o){o(5331),o(9104)},670:function(e,t,o){o(5331),o(9648),o(9104),o(5970)},694:function(e,t,o){o(5331)},797:function(e,t,o){o.d(t,{A:function(){return a}});o(4114),o(4979);var s=o(5507),i=o(1219),n=o(6915);async function a(e,t={}){const o=s.A.getters.credentials||btoa("unset:unset");t.headers={...t.headers,Authorization:`Basic ${o}`},t.credentials="include";const a=await fetch(e,t);return 401===a.status&&(i.nk.error("认证状态错误,请重新登录"),n.A.push("/adminLogin")),a}},3597:function(e,t,o){o(5331)},4318:function(){},5970:function(e,t,o){o(5331)},6011:function(e,t,o){o.d(t,{A:function(){return C}});var s=o(6768),i=o(5130),n=o(4232);const a={id:"themeMaskAdmin"},r=["cx","cy","r"],c=["r"],l=["opacity"];function u(e,t,o,u,d,h){const m=(0,s.g2)("font-awesome-icon");return(0,s.uX)(),(0,s.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>h.handleToggleClick&&h.handleToggleClick(...e))},[(0,s.bF)(i.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(m,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.3em",color:"var(--admin-theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,n.C4)(["theme_toggle_svg",{dark:d.isDark}]),width:"1.3em",height:"1.3em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",a,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:d.isDark?"50%":"100%",cy:d.isDark?"23%":"0%",r:d.isDark?"9":"5"},null,8,r)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMaskAdmin)"},null,8,c),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,l)],2))]),_:1})])}var d={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))}}},h=o(1241);const m=(0,h.A)(d,[["render",u],["__scopeId","data-v-4c6ec90c"]]);var k=m,g=o(2086);o(5331),o(670),o(8830),o(3597);const f={class:"tabs"},b={class:"tabs-dropdown-link"};function p(e,t,o,i,a,r){const c=(0,s.g2)("font-awesome-icon"),l=g.c6,u=g.Iy,d=g.dW,h=k;return(0,s.uX)(),(0,s.CE)("div",f,[(0,s.Lk)("span",{class:"title",onClick:t[0]||(t[0]=(...e)=>r.refreshDashboard&&r.refreshDashboard(...e))},[(0,s.bF)(c,{icon:r.iconName,class:"fa-images"},null,8,["icon"]),(0,s.eW)(" "+(0,n.v_)(r.titleName),1)]),(0,s.bF)(d,{onCommand:r.handleTabClick,class:"tabs-dropdown",role:"navigation",onVisibleChange:r.handleDropdownVisible,"popper-class":"tabs-dropdown-popper"},{dropdown:(0,s.k6)(()=>[(0,s.bF)(u,null,{default:(0,s.k6)(()=>["dashboard"!==o.activeTab?((0,s.uX)(),(0,s.Wv)(l,{key:0,command:"dashboard"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"images",style:{"margin-right":"5px",width:"16px"}}),t[1]||(t[1]=(0,s.eW)(" 文件管理 ",-1))]),_:1})):(0,s.Q3)("",!0),"customerConfig"!==o.activeTab?((0,s.uX)(),(0,s.Wv)(l,{key:1,command:"customerConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"user-cog",style:{"margin-right":"5px",width:"16px"}}),t[2]||(t[2]=(0,s.eW)(" 用户管理 ",-1))]),_:1})):(0,s.Q3)("",!0),"systemConfig"!==o.activeTab?((0,s.uX)(),(0,s.Wv)(l,{key:2,command:"systemConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"cogs",style:{"margin-right":"5px",width:"16px"}}),t[3]||(t[3]=(0,s.eW)(" 系统设置 ",-1))]),_:1})):(0,s.Q3)("",!0),(0,s.bF)(l,{command:""},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"upload",style:{"margin-right":"5px",width:"16px"}}),t[4]||(t[4]=(0,s.eW)(" 文件上传 ",-1))]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("span",b,[(0,s.bF)(c,{icon:"bars",class:"tabs-arrow"})])]),_:1},8,["onCommand","onVisibleChange"]),(0,s.bF)(h)])}o(4114);var y={name:"DashboardTabs",props:{activeTab:{type:String,default:"dashboard"}},components:{AdminToggleDark:k},computed:{titleName(){return"dashboard"===this.activeTab?"文件管理":"customerConfig"===this.activeTab?"用户管理":"systemConfig"===this.activeTab?"系统设置":"上传页面"},iconName(){return"dashboard"===this.activeTab?"images":"customerConfig"===this.activeTab?"user-cog":"systemConfig"===this.activeTab?"cogs":"upload"}},methods:{refreshDashboard(){location.reload()},handleTabClick(e){this.$router.push(`/${e}`)},handleDropdownVisible(e){const t=document.querySelector(".tabs-dropdown-link");e?t.classList.add("rotate-up"):t.classList.remove("rotate-up")}}};const v=(0,h.A)(y,[["render",p],["__scopeId","data-v-4673d77a"]]);var C=v},6808:function(e,t,o){o(5331),o(8785),o(200),o(5970),o(9104)},7128:function(e,t,o){o(5331),o(4318)},8075:function(e,t,o){o(5331)},8450:function(e,t,o){o(5331)},8736:function(e,t,o){o(5331)},8785:function(e,t,o){o(5331)},8830:function(e,t,o){o(5331)},9104:function(e,t,o){o(5331)}}]); -//# sourceMappingURL=239.3f72b765.js.map \ No newline at end of file diff --git a/js/239.3f72b765.js.gz b/js/239.3f72b765.js.gz deleted file mode 100644 index f605322..0000000 Binary files a/js/239.3f72b765.js.gz and /dev/null differ diff --git a/js/239.3f72b765.js.map b/js/239.3f72b765.js.map deleted file mode 100644 index b49f697..0000000 --- a/js/239.3f72b765.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/239.3f72b765.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./src/components/AdminToggleDark.vue?4ecf","webpack://sanyue_imghub/./src/components/AdminToggleDark.vue","webpack://sanyue_imghub/./src/components/AdminToggleDark.vue?9935","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?8d6d","webpack://sanyue_imghub/./src/components/DashboardTabs.vue","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?1414"],"sourcesContent":["import store from '@/store'\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '@/router'\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 const credentials = store.getters.credentials || btoa('unset:unset');\r\n\r\n // 设置 Authorization 头\r\n options.headers = {\r\n ...options.headers,\r\n 'Authorization': `Basic ${credentials}`\r\n };\r\n // 确保包含凭据,如 cookies\r\n options.credentials = 'include'; \r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401) {\r\n // Redirect to the login page if a 401 Unauthorized is returned\r\n ElMessage.error('认证状态错误,请重新登录');\r\n router.push('/adminLogin'); \r\n }\r\n\r\n return response;\r\n}\r\n","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: \"themeMaskAdmin\"\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.3em\",\n height: \"1.3em\",\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(#themeMaskAdmin)\"\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.3em\",\n \"color\": \"var(--admin-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 \"./AdminToggleDark.vue?vue&type=template&id=4c6ec90c&scoped=true\"\nimport script from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./AdminToggleDark.vue?vue&type=style&index=0&id=4c6ec90c&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-4c6ec90c\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tabs\"\n};\nconst _hoisted_2 = {\n class: \"tabs-dropdown-link\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\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_AdminToggleDark = _resolveComponent(\"AdminToggleDark\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: \"title\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.refreshDashboard && $options.refreshDashboard(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.iconName,\n class: \"fa-images\"\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.titleName), 1)]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleTabClick,\n class: \"tabs-dropdown\",\n role: \"navigation\",\n onVisibleChange: $options.handleDropdownVisible,\n \"popper-class\": \"tabs-dropdown-popper\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [$props.activeTab !== 'dashboard' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 0,\n command: \"dashboard\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"images\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _cache[1] || (_cache[1] = _createTextVNode(\" 文件管理 \", -1))]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'customerConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 1,\n command: \"customerConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-cog\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _cache[2] || (_cache[2] = _createTextVNode(\" 用户管理 \", -1))]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'systemConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 2,\n command: \"systemConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cogs\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _cache[3] || (_cache[3] = _createTextVNode(\" 系统设置 \", -1))]),\n _: 1\n })) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown_item, {\n command: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 文件上传 \", -1))]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_2, [_createVNode(_component_font_awesome_icon, {\n icon: \"bars\",\n class: \"tabs-arrow\"\n })])]),\n _: 1\n }, 8, [\"onCommand\", \"onVisibleChange\"]), _createVNode(_component_AdminToggleDark)]);\n}","import \"core-js/modules/es.array.push.js\";\nimport AdminToggleDark from './AdminToggleDark.vue';\nexport default {\n name: 'DashboardTabs',\n props: {\n activeTab: {\n type: String,\n default: 'dashboard'\n }\n },\n components: {\n AdminToggleDark\n },\n computed: {\n titleName() {\n if (this.activeTab === 'dashboard') {\n return '文件管理';\n } else if (this.activeTab === 'customerConfig') {\n return '用户管理';\n } else if (this.activeTab === 'systemConfig') {\n return '系统设置';\n } else {\n return '上传页面';\n }\n },\n iconName() {\n if (this.activeTab === 'dashboard') {\n return 'images';\n } else if (this.activeTab === 'customerConfig') {\n return 'user-cog';\n } else if (this.activeTab === 'systemConfig') {\n return 'cogs';\n } else {\n return 'upload';\n }\n }\n },\n methods: {\n refreshDashboard() {\n location.reload();\n },\n handleTabClick(tab) {\n this.$router.push(`/${tab}`);\n },\n handleDropdownVisible(isVisible) {\n const arrow = document.querySelector('.tabs-dropdown-link');\n if (isVisible) {\n arrow.classList.add('rotate-up'); // 添加旋转类\n } else {\n arrow.classList.remove('rotate-up'); // 移除旋转类\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardTabs.vue?vue&type=template&id=4673d77a&scoped=true\"\nimport script from \"./DashboardTabs.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardTabs.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardTabs.vue?vue&type=style&index=0&id=4673d77a&scoped=true&lang=css\"\nimport \"./DashboardTabs.vue?vue&type=style&index=1&id=4673d77a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4673d77a\"]])\n\nexport default __exports__"],"names":["async","fetchWithAuth","url","options","credentials","store","getters","btoa","headers","response","fetch","status","ElMessage","error","router","push","_hoisted_1","id","_hoisted_2","_hoisted_3","_hoisted_4","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","onClick","args","handleToggleClick","name","mode","default","isAuto","key","icon","class","style","isDark","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","opacity","x1","y1","x2","y2","_","data","this","$store","useDarkMode","cusDarkMode","methods","commit","__exports__","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_AdminToggleDark","refreshDashboard","iconName","titleName","onCommand","handleTabClick","role","onVisibleChange","handleDropdownVisible","dropdown","activeTab","command","props","type","String","components","AdminToggleDark","computed","location","reload","tab","$router","isVisible","arrow","document","querySelector","classList","add","remove"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/239.3f72b765.js.map.gz b/js/239.3f72b765.js.map.gz deleted file mode 100644 index e246a63..0000000 Binary files a/js/239.3f72b765.js.map.gz and /dev/null differ diff --git a/js/419.2f159947.js b/js/419.2f159947.js deleted file mode 100644 index e63900a..0000000 --- a/js/419.2f159947.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[419],{2907:function(e,a,t){t(5331),t(6808),t(6711)},4752:function(e,a,t){t(5331),t(8736),t(8785)},5802:function(e,a,t){t(5331),t(8736),t(213),t(5970)},8419:function(e,a,t){t.r(a),t.d(a,{default:function(){return L}});var i=t(9114),n=(t(5331),t(694),t(47)),o=(t(9648),t(7815)),l=(t(2907),t(5558)),s=(t(8075),t(7138)),d=(t(5802),t(7009)),r=(t(8450),t(4752),t(4880)),c=(t(7128),t(8507)),u=(t(213),t(6011)),h=t(6768),p=t(4232);const m={class:"container"},g={class:"header-content"},b={class:"header-action"},f={class:"main-container"},k={style:{margin:"8px"}},y=["src"],C={key:2,style:{width:"100px",height:"100px",display:"flex","justify-content":"center","align-items":"center"}},w={class:"pagination-container"};function v(e,a,t,v,T,S){const D=u.A,F=(0,h.g2)("font-awesome-icon"),L=c.R7,x=r.bZ,z=s.o8,_=d.Zq,A=s.Up,E=l.qi,P=o.aQ,W=n.S2,X=i.A;return(0,h.uX)(),(0,h.CE)("div",m,[(0,h.bF)(x,null,{default:(0,h.k6)(()=>[(0,h.Lk)("div",g,[(0,h.bF)(D,{activeTab:"customerConfig"}),(0,h.Lk)("div",b,[(0,h.bF)(L,{disabled:S.disableTooltip,content:"退出登录",placement:"bottom"},{default:(0,h.k6)(()=>[(0,h.bF)(F,{icon:"sign-out-alt",class:"header-icon",onClick:S.handleLogout},null,8,["onClick"])]),_:1},8,["disabled"])])])]),_:1}),(0,h.Lk)("div",f,[(0,h.bo)(((0,h.uX)(),(0,h.Wv)(A,{data:S.paginatedData,"default-sort":{prop:"count",order:"descending"},class:"main-table","table-layout":"fixed"},{default:(0,h.k6)(()=>[(0,h.bF)(z,{type:"expand"},{default:(0,h.k6)(e=>[(0,h.Lk)("div",k,[a[0]||(a[0]=(0,h.Lk)("h3",{style:{"text-align":"center"}},"上传文件列表",-1)),(0,h.bF)(A,{data:e.row.data,style:{width:"100%"},"default-sort":{prop:"metadata.TimeStamp",order:"descending"},"table-layout":"fixed","max-height":400},{default:(0,h.k6)(()=>[(0,h.bF)(z,{prop:"metadata.FileName",label:"文件名"}),(0,h.bF)(z,{label:"文件预览"},{default:(0,h.k6)(({row:e})=>[e.metadata?.FileType?.includes("image")?((0,h.uX)(),(0,h.Wv)(_,{key:0,src:"/file/"+e.id+"?from=admin",fit:"cover",lazy:"",style:{width:"100px",height:"100px"}},null,8,["src"])):e.metadata?.FileType?.includes("video")?((0,h.uX)(),(0,h.CE)("video",{key:1,src:"/file/"+e.id+"?from=admin",controls:"",style:{width:"100px",height:"100px"}},null,8,y)):((0,h.uX)(),(0,h.CE)("div",C,[(0,h.bF)(F,{icon:"file",style:{"font-size":"2em"}})]))]),_:1}),(0,h.bF)(z,{formatter:S.formatTimeStamp,label:"上传时间",prop:"metadata.TimeStamp",sortable:"","sort-method":S.sortByTimestamp},{default:(0,h.k6)(({row:e})=>[(0,h.eW)((0,p.v_)(S.formatTimeStamp(e.metadata.TimeStamp)),1)]),_:1},8,["formatter","sort-method"])]),_:1},8,["data"])])]),_:1}),(0,h.bF)(z,{prop:"ip",label:"IP地址"}),(0,h.bF)(z,{prop:"address",label:"地址"}),(0,h.bF)(z,{prop:"count",label:"上传次数",sortable:""}),(0,h.bF)(z,{label:"允许上传"},{default:(0,h.k6)(({row:e})=>[(0,h.bF)(E,{modelValue:e.enable,"onUpdate:modelValue":a=>e.enable=a,"active-color":"#13ce66","inactive-color":"#ff4949","active-text":"允许","inactive-text":"禁止",onChange:a=>S.handleSwitchEnable(e)},null,8,["modelValue","onUpdate:modelValue","onChange"])]),_:1})]),_:1},8,["data"])),[[X,T.loading]]),(0,h.Lk)("div",w,[(0,h.bF)(P,{background:"",layout:"prev, pager, next",total:T.dealedData.length,"current-page":T.currentPage,"page-size":T.pageSize,"pager-count":S.pagerCount,onCurrentChange:S.handlePageChange},null,8,["total","current-page","page-size","pager-count","onCurrentChange"]),T.currentPage===Math.ceil(T.dealedData.length/T.pageSize)?((0,h.uX)(),(0,h.Wv)(W,{key:0,type:"primary",onClick:S.loadMoreData,loading:T.loading,class:"load-more"},{default:(0,h.k6)(()=>[...a[1]||(a[1]=[(0,h.eW)("加载更多",-1)])]),_:1},8,["onClick","loading"])):(0,h.Q3)("",!0)])])])}t(4114),t(8111),t(2489),t(1701);var T=t(797),S={name:"CustomerConfig",data(){return{tableData:[],dealedData:[],blockipList:[],loading:!1,currentPage:1,pageSize:10}},components:{DashboardTabs:u.A},computed:{disableTooltip(){return window.innerWidth<768},pagerCount(){return window.innerWidth<768?3:7},paginatedData(){const e=(this.currentPage-1)*this.pageSize,a=e+this.pageSize;return this.dealedData.slice(e,a)}},methods:{handleLogout(){this.$store.commit("setCredentials",null),this.$router.push("/adminLogin")},formatTimeStamp(e){return new Date(e).toLocaleString()},sortByTimestamp(e,a){return new Date(e.metadata.TimeStamp)-new Date(a.metadata.TimeStamp)},async handleSwitchEnable(e){const a=e.ip,t=e.enable;t?(this.blockipList=this.blockipList.filter(e=>e!==a),await(0,T.A)("/api/manage/cusConfig/whiteip",{method:"POST",body:a})):(this.blockipList.push(a),await(0,T.A)("/api/manage/cusConfig/blockip",{method:"POST",body:a}))},handlePageChange(e){this.currentPage=e,e===Math.ceil(this.dealedData.length/this.pageSize)&&this.loadMoreData()},loadMoreData(){this.loading=!0;const e=this.dealedData.length,a=20;(0,T.A)(`/api/manage/cusConfig/list?start=${e}&count=${a}`,{method:"GET"}).then(e=>e.json()).then(e=>{this.dealedData=this.dealedData.concat(e.map(e=>{const a=!this.blockipList.includes(e.ip);return{ip:e.ip,address:e.address,count:e.count,data:e.data,enable:a}}))}).catch(()=>{this.$message.error("加载更多数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1})},handleSizeChange(e){this.pageSize=e,this.currentPage=1}},mounted(){this.loading=!0,(0,T.A)("/api/manage/check",{method:"GET"}).then(e=>e.text()).then(e=>{if("true"==e)return this.showLogoutButton=!0,(0,T.A)("/api/manage/cusConfig/list?count=20",{method:"GET"});if("Not using basic auth."==e)return(0,T.A)("/api/manage/cusConfig/list?count=20",{method:"GET"});throw new Error("Unauthorized")}).then(e=>e.json()).then(async e=>{const a=await(0,T.A)("/api/manage/cusConfig/blockipList",{method:"GET"});this.blockipList=(await a.text()).split(","),this.dealedData=e.map(e=>{const a=!this.blockipList.includes(e.ip);return{ip:e.ip,address:e.address,count:e.count,data:e.data,enable:a}})}).catch(e=>{"Unauthorized"!==e.message&&this.$message.error("同步数据时出错,请检查网络连接")}).finally(()=>{this.loading=!1})}},D=t(1241);const F=(0,D.A)(S,[["render",v],["__scopeId","data-v-1c7a5eff"]]);var L=F}}]); -//# sourceMappingURL=419.2f159947.js.map \ No newline at end of file diff --git a/js/419.2f159947.js.gz b/js/419.2f159947.js.gz deleted file mode 100644 index 4e2ed32..0000000 Binary files a/js/419.2f159947.js.gz and /dev/null differ diff --git a/js/419.2f159947.js.map b/js/419.2f159947.js.map deleted file mode 100644 index c70d50b..0000000 --- a/js/419.2f159947.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/419.2f159947.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/views/CustomerConfig.vue?3f6a","webpack://sanyue_imghub/./src/views/CustomerConfig.vue","webpack://sanyue_imghub/./src/views/CustomerConfig.vue?658e"],"sourcesContent":["import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"header-content\"\n};\nconst _hoisted_3 = {\n class: \"header-action\"\n};\nconst _hoisted_4 = {\n class: \"main-container\"\n};\nconst _hoisted_5 = {\n style: {\n \"margin\": \"8px\"\n }\n};\nconst _hoisted_6 = [\"src\"];\nconst _hoisted_7 = {\n key: 2,\n style: {\n \"width\": \"100px\",\n \"height\": \"100px\",\n \"display\": \"flex\",\n \"justify-content\": \"center\",\n \"align-items\": \"center\"\n }\n};\nconst _hoisted_8 = {\n class: \"pagination-container\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_DashboardTabs = _resolveComponent(\"DashboardTabs\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_header = _resolveComponent(\"el-header\");\n const _component_el_table_column = _resolveComponent(\"el-table-column\");\n const _component_el_image = _resolveComponent(\"el-image\");\n const _component_el_table = _resolveComponent(\"el-table\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_pagination = _resolveComponent(\"el-pagination\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_el_header, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_DashboardTabs, {\n activeTab: \"customerConfig\"\n }), _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"退出登录\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"header-icon\",\n onClick: $options.handleLogout\n }, null, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])])])]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_4, [_withDirectives((_openBlock(), _createBlock(_component_el_table, {\n data: $options.paginatedData,\n \"default-sort\": {\n prop: 'count',\n order: 'descending'\n },\n class: \"main-table\",\n \"table-layout\": \"fixed\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_table_column, {\n type: \"expand\"\n }, {\n default: _withCtx(props => [_createElementVNode(\"div\", _hoisted_5, [_cache[0] || (_cache[0] = _createElementVNode(\"h3\", {\n style: {\n \"text-align\": \"center\"\n }\n }, \"上传文件列表\", -1)), _createVNode(_component_el_table, {\n data: props.row.data,\n style: {\n \"width\": \"100%\"\n },\n \"default-sort\": {\n prop: 'metadata.TimeStamp',\n order: 'descending'\n },\n \"table-layout\": \"fixed\",\n \"max-height\": 400\n }, {\n default: _withCtx(() => [_createVNode(_component_el_table_column, {\n prop: \"metadata.FileName\",\n label: \"文件名\"\n }), _createVNode(_component_el_table_column, {\n label: \"文件预览\"\n }, {\n default: _withCtx(({\n row\n }) => [row.metadata?.FileType?.includes('image') ? (_openBlock(), _createBlock(_component_el_image, {\n key: 0,\n src: '/file/' + row.id + '?from=admin',\n fit: \"cover\",\n lazy: \"\",\n style: {\n \"width\": \"100px\",\n \"height\": \"100px\"\n }\n }, null, 8, [\"src\"])) : row.metadata?.FileType?.includes('video') ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: '/file/' + row.id + '?from=admin',\n controls: \"\",\n style: {\n \"width\": \"100px\",\n \"height\": \"100px\"\n }\n }, null, 8, _hoisted_6)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n style: {\n \"font-size\": \"2em\"\n }\n })]))]),\n _: 1\n }), _createVNode(_component_el_table_column, {\n formatter: $options.formatTimeStamp,\n label: \"上传时间\",\n prop: \"metadata.TimeStamp\",\n sortable: \"\",\n \"sort-method\": $options.sortByTimestamp\n }, {\n default: _withCtx(({\n row\n }) => [_createTextVNode(_toDisplayString($options.formatTimeStamp(row.metadata.TimeStamp)), 1)]),\n _: 1\n }, 8, [\"formatter\", \"sort-method\"])]),\n _: 1\n }, 8, [\"data\"])])]),\n _: 1\n }), _createVNode(_component_el_table_column, {\n prop: \"ip\",\n label: \"IP地址\"\n }), _createVNode(_component_el_table_column, {\n prop: \"address\",\n label: \"地址\"\n }), _createVNode(_component_el_table_column, {\n prop: \"count\",\n label: \"上传次数\",\n sortable: \"\"\n }), _createVNode(_component_el_table_column, {\n label: \"允许上传\"\n }, {\n default: _withCtx(({\n row\n }) => [_createVNode(_component_el_switch, {\n modelValue: row.enable,\n \"onUpdate:modelValue\": $event => row.enable = $event,\n \"active-color\": \"#13ce66\",\n \"inactive-color\": \"#ff4949\",\n \"active-text\": \"允许\",\n \"inactive-text\": \"禁止\",\n onChange: $event => $options.handleSwitchEnable(row)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onChange\"])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"data\"])), [[_directive_loading, $data.loading]]), _createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_pagination, {\n background: \"\",\n layout: \"prev, pager, next\",\n total: $data.dealedData.length,\n \"current-page\": $data.currentPage,\n \"page-size\": $data.pageSize,\n \"pager-count\": $options.pagerCount,\n onCurrentChange: $options.handlePageChange\n }, null, 8, [\"total\", \"current-page\", \"page-size\", \"pager-count\", \"onCurrentChange\"]), $data.currentPage === Math.ceil($data.dealedData.length / $data.pageSize) ? (_openBlock(), _createBlock(_component_el_button, {\n key: 0,\n type: \"primary\",\n onClick: $options.loadMoreData,\n loading: $data.loading,\n class: \"load-more\"\n }, {\n default: _withCtx(() => [...(_cache[1] || (_cache[1] = [_createTextVNode(\"加载更多\", -1)]))]),\n _: 1\n }, 8, [\"onClick\", \"loading\"])) : _createCommentVNode(\"\", true)])])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nimport DashboardTabs from '@/components/DashboardTabs.vue';\nexport default {\n name: 'CustomerConfig',\n data() {\n return {\n tableData: [],\n dealedData: [],\n // 根据IP地址处理后的数据,格式为 {ip, count, [data]}\n blockipList: [],\n // 禁止上传的IP列表\n\n loading: false,\n // 分页数据\n currentPage: 1,\n pageSize: 10 // 默认每页10条\n };\n },\n components: {\n DashboardTabs\n },\n computed: {\n disableTooltip() {\n return window.innerWidth < 768;\n },\n pagerCount() {\n return window.innerWidth < 768 ? 3 : 7;\n },\n paginatedData() {\n // 计算分页数据\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n return this.dealedData.slice(start, end);\n }\n },\n methods: {\n handleLogout() {\n this.$store.commit('setCredentials', null);\n this.$router.push('/adminLogin');\n },\n formatTimeStamp(timeStamp) {\n return new Date(timeStamp).toLocaleString();\n },\n sortByTimestamp(a, b) {\n return new Date(a.metadata.TimeStamp) - new Date(b.metadata.TimeStamp);\n },\n async handleSwitchEnable(row) {\n const ip = row.ip;\n const enable = row.enable;\n if (enable) {\n // 从 blockipList 中移除\n this.blockipList = this.blockipList.filter(item => item !== ip);\n // 更新 blockipList\n await fetchWithAuth(\"/api/manage/cusConfig/whiteip\", {\n method: 'POST',\n body: ip\n });\n } else {\n // 添加到 blockipList 中\n this.blockipList.push(ip);\n // 更新 blockipList\n await fetchWithAuth(\"/api/manage/cusConfig/blockip\", {\n method: 'POST',\n body: ip\n });\n }\n },\n handlePageChange(page) {\n this.currentPage = page;\n // 到最后一页时,加载更多数据\n if (page === Math.ceil(this.dealedData.length / this.pageSize)) {\n this.loadMoreData();\n }\n },\n loadMoreData() {\n this.loading = true;\n const start = this.dealedData.length;\n const count = 20; // 每次加载20条数据\n fetchWithAuth(`/api/manage/cusConfig/list?start=${start}&count=${count}`, {\n method: 'GET'\n }).then(response => response.json()).then(result => {\n this.dealedData = this.dealedData.concat(result.map(item => {\n const enable = !this.blockipList.includes(item.ip);\n return {\n ip: item.ip,\n address: item.address,\n count: item.count,\n data: item.data,\n enable: enable\n };\n }));\n }).catch(() => {\n this.$message.error('加载更多数据时出错,请检查网络连接');\n }).finally(() => {\n this.loading = false;\n });\n },\n handleSizeChange(size) {\n this.pageSize = size;\n this.currentPage = 1;\n }\n },\n mounted() {\n this.loading = true;\n fetchWithAuth(\"/api/manage/check\", {\n method: 'GET'\n }).then(response => response.text()).then(result => {\n if (result == \"true\") {\n this.showLogoutButton = true;\n // 在 check 成功后再执行 list 的 fetch 请求\n return fetchWithAuth(\"/api/manage/cusConfig/list?count=20\", {\n method: 'GET'\n });\n } else if (result == \"Not using basic auth.\") {\n return fetchWithAuth(\"/api/manage/cusConfig/list?count=20\", {\n method: 'GET'\n });\n } else {\n throw new Error('Unauthorized');\n }\n }).then(response => response.json()).then(async result => {\n // 读取blockipList, 接口返回格式为 'ip1,ip2,ip3',需要转换为数组\n const blockipList = await fetchWithAuth(\"/api/manage/cusConfig/blockipList\", {\n method: 'GET'\n });\n this.blockipList = (await blockipList.text()).split(',');\n this.dealedData = result.map(item => {\n const enable = !this.blockipList.includes(item.ip);\n return {\n ip: item.ip,\n address: item.address,\n count: item.count,\n data: item.data,\n enable: enable\n };\n });\n }).catch(err => {\n if (err.message !== 'Unauthorized') {\n this.$message.error('同步数据时出错,请检查网络连接');\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./CustomerConfig.vue?vue&type=template&id=1c7a5eff&scoped=true\"\nimport script from \"./CustomerConfig.vue?vue&type=script&lang=js\"\nexport * from \"./CustomerConfig.vue?vue&type=script&lang=js\"\n\nimport \"./CustomerConfig.vue?vue&type=style&index=0&id=1c7a5eff&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-1c7a5eff\"]])\n\nexport default __exports__"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","style","_hoisted_6","_hoisted_7","key","_hoisted_8","render","_ctx","_cache","$props","$setup","$data","$options","_component_DashboardTabs","_component_font_awesome_icon","_component_el_tooltip","_component_el_header","_component_el_table_column","_component_el_image","_component_el_table","_component_el_switch","_component_el_pagination","_component_el_button","_directive_loading","default","activeTab","disabled","disableTooltip","content","placement","icon","onClick","handleLogout","_","data","paginatedData","prop","order","type","props","row","label","metadata","FileType","includes","src","id","fit","lazy","controls","formatter","formatTimeStamp","sortable","sortByTimestamp","TimeStamp","modelValue","enable","$event","onChange","handleSwitchEnable","loading","background","layout","total","dealedData","length","currentPage","pageSize","pagerCount","onCurrentChange","handlePageChange","Math","ceil","loadMoreData","name","tableData","blockipList","components","DashboardTabs","computed","window","innerWidth","start","this","end","slice","methods","$store","commit","$router","push","timeStamp","Date","toLocaleString","a","b","ip","filter","item","fetchWithAuth","method","body","page","count","then","response","json","result","concat","map","address","catch","$message","error","finally","handleSizeChange","size","mounted","text","showLogoutButton","Error","async","split","err","message","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/419.2f159947.js.map.gz b/js/419.2f159947.js.map.gz deleted file mode 100644 index 2d8fe48..0000000 Binary files a/js/419.2f159947.js.map.gz and /dev/null differ diff --git a/js/600.3d796c41.js b/js/600.3d796c41.js deleted file mode 100644 index 1bd0cee..0000000 --- a/js/600.3d796c41.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[600],{732:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(6768),o=n(4232);const i=["href","target"],r=["alt","src"];function s(e,t,n,s,l,c){return(0,a.uX)(),(0,a.CE)("a",{href:c.logoHref,target:n.target,class:(0,o.C4)(e.logo-e.link)},[(0,a.Lk)("img",{class:(0,o.C4)(c.logoClasses),alt:n.alt,src:c.logoUrl},null,10,r)],10,i)}var l=n(8401),c={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,l.L8)(["userConfig"]),logoUrl(){return this.customSrc||this.userConfig?.logoUrl||n(3153)},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}}}},u=n(1241);const g=(0,u.A)(c,[["render",s],["__scopeId","data-v-17f54292"]]);var d=g},3153:function(e,t,n){e.exports=n.p+"img/logo.e8dbfa27.png"},4453:function(e,t,n){n.d(t,{A:function(){return m}});var a=n(6768),o=n(5130),i=n(4232);const r={id:"themeMask"},s=["cx","cy","r"],l=["r"],c=["opacity"];function u(e,t,n,u,g,d){const h=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>d.handleToggleClick&&d.handleToggleClick(...e))},[(0,a.bF)(o.eB,{name:"icon-fade",mode:"out-in"},{default:(0,a.k6)(()=>[g.isAuto?((0,a.uX)(),(0,a.Wv)(h,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,a.uX)(),(0,a.CE)("svg",{key:"sun-moon",class:(0,i.C4)(["theme_toggle_svg",{dark:g.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",r,[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:g.isDark?"50%":"100%",cy:g.isDark?"23%":"0%",r:g.isDark?"9":"5"},null,8,s)]),(0,a.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:g.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,a.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:g.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,c)],2))]),_:1})])}var g={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))}}},d=n(1241);const h=(0,d.A)(g,[["render",u],["__scopeId","data-v-466b2b5c"]]);var m=h},4896:function(e,t,n){n(5331)},6975:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(6768),o=n(4232);const i={key:0,class:"page-footer"},r=["href"];function s(e,t,n,s,l,c){const u=(0,a.g2)("font-awesome-icon");return c.disableFooter?(0,a.Q3)("",!0):((0,a.uX)(),(0,a.CE)("div",i,[(0,a.Lk)("p",null,[(0,a.eW)("© 2024-"+(0,o.v_)(c.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:c.footerLink,target:"_blank"},[(0,a.bF)(u,{icon:"paper-plane",class:"footer-link-icon"})],8,r)])]))}var l=n(8401),c={name:"Footer",computed:{...(0,l.L8)(["userConfig"]),footerLink(){return this.userConfig?.footerLink||"https://github.com/MarSeventh"},thisYear(){return(new Date).getFullYear()},disableFooter(){return this.userConfig?.disableFooter||!1}}},u=n(1241);const g=(0,u.A)(c,[["render",s],["__scopeId","data-v-08acbaa9"]]);var d=g},7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},8351:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},8903:function(e,t,n){var a=n(8401);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n Background Image\n Background Image\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n opacity: 0;\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n opacity: 0;\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){if(this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a},a){const e=document.querySelector(t);!e||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(e)}const o=document.getElementById("bg1"),i=document.getElementById("bg2");if(!o||!i)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(o,i,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(o,i,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(o,r[0],t):n&&this.setupDefaultWallpaper(o,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,o=n(a?8351:7835);this.loadBackgroundImage(e,o,t)},loadBackgroundImage(e,t,n){e.src=t,e.onload=()=>{e.style.opacity=this.bkOpacity;const t=document.querySelector(n);t&&(t.style.background="transparent")}},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity?e:t,a=0!=e.style.opacity?t:e;n.style.opacity=0,this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length,a.src=this.bingWallPapers[this.bingWallPaperIndex]?.url,a.onload=()=>{a.style.opacity=this.bkOpacity}},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity?e:t,o=0!=e.style.opacity?t:e;a.style.opacity=0,this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length,o.src=n[this.customWallPaperIndex],o.onload=()=>{o.style.opacity=this.bkOpacity}},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},800)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},800)))},smoothThemeTransition(e,t=".login",a=!1,o=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,o);const r=document.getElementById("bg1"),s=document.getElementById("bg2");if(!r||!s)return void this.reinitializeBackground(e,t,a,o);const l=0!=r.style.opacity?r:s,c=0!=r.style.opacity?s:r,u=this.useDarkMode,g=n(u?8351:7835),d=new Image;d.onload=()=>{c.src=g,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity;const e=document.querySelector(t);e&&(e.style.background="transparent")},50)}},d.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,o)},d.src=g},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}}}]); -//# sourceMappingURL=600.3d796c41.js.map \ No newline at end of file diff --git a/js/600.3d796c41.js.gz b/js/600.3d796c41.js.gz deleted file mode 100644 index 800c286..0000000 Binary files a/js/600.3d796c41.js.gz and /dev/null differ diff --git a/js/600.3d796c41.js.map b/js/600.3d796c41.js.map deleted file mode 100644 index abc7b2d..0000000 --- a/js/600.3d796c41.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/600.3d796c41.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/ToggleDark.vue?6d4a","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","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/mixins/backgroundManager.js"],"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 { 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=466b2b5c&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=466b2b5c&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-466b2b5c\"]])\n\nexport default __exports__","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__","/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \"Background\r\n \"Background\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n opacity: 0;\r\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n opacity: 0;\r\n transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n if (autoCreateElements) {\r\n const container = document.querySelector(containerSelector)\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n imgElement.src = imageSrc\r\n imgElement.onload = () => {\r\n imgElement.style.opacity = this.bkOpacity\r\n // 设置容器背景为透明\r\n const container = document.querySelector(containerSelector)\r\n if (container) {\r\n container.style.background = 'transparent'\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const curBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n \r\n curBg.style.opacity = 0\r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n \r\n nextBg.src = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n nextBg.onload = () => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const curBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n \r\n curBg.style.opacity = 0\r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n \r\n nextBg.src = wallpapers[this.customWallPaperIndex]\r\n nextBg.onload = () => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1)'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 800) // 等待过渡完成后清除src\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 800) // 等待过渡完成后清除src\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n \r\n // 设置容器背景为透明\r\n const container = document.querySelector(containerSelector)\r\n if (container) {\r\n container.style.background = 'transparent'\r\n }\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n"],"names":["_hoisted_1","_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__","id","_hoisted_3","_hoisted_4","_component_font_awesome_icon","onClick","args","handleToggleClick","mode","isAuto","key","icon","style","isDark","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","opacity","x1","y1","x2","y2","_","data","$store","getters","useDarkMode","cusDarkMode","methods","commit","disableFooter","thisYear","footerLink","Date","getFullYear","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","mapGetters","bkInterval","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","styleId","document","getElementById","createElement","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","bg2","insertBefore","firstChild","initializeBackground","querySelector","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","defaultImage","require","imgElement","imageSrc","onload","background","curBg","nextBg","clearBackgroundInterval","immediate","transition","setTimeout","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","Image","onerror"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/600.3d796c41.js.map.gz b/js/600.3d796c41.js.map.gz deleted file mode 100644 index 63ce730..0000000 Binary files a/js/600.3d796c41.js.map.gz and /dev/null differ diff --git a/js/655.680e2609.js b/js/655.680e2609.js deleted file mode 100644 index 4a20763..0000000 --- a/js/655.680e2609.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[655],{200:function(e,t,o){"use strict";o(5331)},213:function(e,t,o){"use strict";o(5331),o(9104)},333:function(e,t,o){"use strict";o(5331),o(6711)},670:function(e,t,o){"use strict";o(5331),o(9648),o(9104),o(5970)},1393:function(e,t,o){o(6573),o(8100),o(7936),o(9577),o(1549),o(9797),o(9631),o(5623),o(4979),o(4603),o(7566),o(8721),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(s){if(t[s])return t[s].exports;var l=t[s]={i:s,l:!1,exports:{}};return e[s].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},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 s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(s,l,function(t){return e[t]}.bind(null,l));return s},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 s;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 c}),o.d(t,"dataURLtoImage",function(){return d}),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 y}),o.d(t,"compressAccurately",function(){return C}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var a=function(e,t,o,s){return new(o||(o=Promise))(function(l,a){function i(e){try{r(s.next(e))}catch(e){a(e)}}function n(e){try{r(s.throw(e))}catch(e){a(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((s=s.apply(e,t||[])).next())})};function i(e,t=.92,o=s.JPEG){return a(this,void 0,void 0,function*(){return l(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(l,a){function i(e){try{r(s.next(e))}catch(e){a(e)}}function n(e){try{r(s.throw(e))}catch(e){a(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((s=s.apply(e,t||[])).next())})};function c(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const a=atob(o[1]);let i=a.length;const n=new Uint8Array(i);for(;i--;)n[i]=a.charCodeAt(i);return l(t)&&(s=t),new Blob([n],{type:s})})}function d(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.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 s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),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,s){return new(o||(o=Promise))(function(l,a){function i(e){try{r(s.next(e))}catch(e){a(e)}}function n(e){try{r(s.throw(e))}catch(e){a(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((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),l=s.getContext("2d");let a,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,a=e.height*t}else i=o.width||o.height*e.width/e.height||e.width,a=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(s.height=i,s.width=a):(s.height=a,s.width=i),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;case 2:l.translate(s.width,0),l.scale(-1,1),l.drawImage(e,0,0,s.width,s.height);break;case 4:l.translate(s.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:l.translate(s.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 7:l.translate(s.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;default:l.drawImage(e,0,0,s.width,s.height)}return s})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var b=function(e,t,o,s){return new(o||(o=Promise))(function(l,a){function i(e){try{r(s.next(e))}catch(e){a(e)}}function n(e){try{r(s.throw(e))}catch(e){a(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((s=s.apply(e,t||[])).next())})};function y(e,t={}){return b(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 a=o.split(",")[0].match(/:(.*?);/)[1],n=s.JPEG;l(t.type)&&(n=t.type,a=t.type);const r=yield d(o),u=yield m(r,Object.assign({},t)),h=yield i(u,t.quality,n),f=yield c(h,a);return f.size>e.size?e:f})}function C(e,t={}){return b(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,a=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=s.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield d(r),g=yield m(f,Object.assign({},t));let b,y=.5;const C=[null,null];for(let e=1;e<=7;e++){b=yield i(g,y,h);const t=.75*b.length;if(7===e){(ot)&&(b=[b,...C].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-a)-Math.abs(.75*t.length-a))[0]);break}if(ot))break;C[0]=b,y+=Math.pow(.5,e+1)}}const k=yield c(b,u);return k.size>e.size?e:k})}}])})},2893:function(e,t,o){"use strict";o(5331)},3597:function(e,t,o){"use strict";o(5331)},4396:function(e,t,o){"use strict";o(5331),o(4885)},4885:function(e,t,o){"use strict";o(5331)},5385:function(e,t,o){"use strict";o(5331)},5616:function(e,t,o){"use strict";o(5331),o(7197)},5970:function(e,t,o){"use strict";o(5331)},6323:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return Et}});var s=o(8507),l=(o(5331),o(213),o(47)),a=(o(9648),o(6768)),i=o(4232);const n={class:"history-header"},r={class:"header-left"},c={class:"record-count"},d={class:"header-right"},u={key:0,class:"history-content"},p={class:"timeline-header"},h={class:"date-label"},m={key:0,class:"grid-view"},f={class:"grid-preview"},g=["src"],b=["src"],y={key:2,class:"file-icon-wrapper"},C={class:"grid-overlay"},k={class:"grid-actions"},w={class:"grid-info"},v=["title"],F={class:"upload-time"},L={key:1,class:"list-view"},U={class:"list-preview"},x=["src"],S=["src"],T={key:2,class:"file-icon-wrapper-small"},$={class:"list-info"},_=["title"],M=["title"],R={class:"list-meta"},E={class:"upload-time"},I={class:"list-actions"},A={key:1,class:"empty-state"};function P(e,t,o,P,N,V){const z=(0,a.g2)("font-awesome-icon"),D=l.S2,B=s.R7;return(0,a.uX)(),(0,a.CE)("div",{class:(0,i.C4)(["history-container",{active:o.show}])},[(0,a.Lk)("div",n,[(0,a.Lk)("div",r,[t[3]||(t[3]=(0,a.Lk)("h2",null,"历史记录",-1)),(0,a.Lk)("span",c,"共 "+(0,i.v_)(N.historyList.length)+" 条",1)]),(0,a.Lk)("div",d,[(0,a.bF)(B,{content:"切换视图",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(D,{circle:"",onClick:V.toggleViewMode},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"grid"===N.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1}),(0,a.bF)(B,{content:"清空记录",placement:"bottom"},{default:(0,a.k6)(()=>[(0,a.bF)(D,{circle:"",type:"danger",onClick:V.clearHistory},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1}),(0,a.bF)(D,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"times"})]),_:1})])]),N.historyList.length>0?((0,a.uX)(),(0,a.CE)("div",u,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(V.groupedHistory,e=>((0,a.uX)(),(0,a.CE)("div",{key:e.date,class:"history-group"},[(0,a.Lk)("div",p,[t[4]||(t[4]=(0,a.Lk)("div",{class:"timeline-dot"},null,-1)),(0,a.Lk)("span",h,(0,i.v_)(e.date),1)]),"grid"===N.viewMode?((0,a.uX)(),(0,a.CE)("div",m,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(e.items,(e,o)=>((0,a.uX)(),(0,a.CE)("div",{key:e.time,class:"grid-item"},[(0,a.Lk)("div",f,[V.isImage(e.name)?((0,a.uX)(),(0,a.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,g)):V.isVideo(e.name)?((0,a.uX)(),(0,a.CE)("video",{key:1,src:e.url,muted:""},null,8,b)):((0,a.uX)(),(0,a.CE)("div",y,[(0,a.bF)(z,{icon:"file",class:"file-icon"})])),(0,a.Lk)("div",C,[(0,a.Lk)("div",k,[(0,a.bF)(D,{circle:"",size:"default",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"copy"})]),_:1},8,["onClick"]),(0,a.bF)(D,{circle:"",size:"default",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,a.bF)(D,{circle:"",size:"default",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,a.Lk)("div",w,[(0,a.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,v),(0,a.Lk)("div",F,(0,i.v_)(V.formatTime(e.time)),1)])]))),128))])):((0,a.uX)(),(0,a.CE)("div",L,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(e.items,(e,o)=>((0,a.uX)(),(0,a.CE)("div",{key:e.time,class:"list-item"},[(0,a.Lk)("div",U,[V.isImage(e.name)?((0,a.uX)(),(0,a.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,x)):V.isVideo(e.name)?((0,a.uX)(),(0,a.CE)("video",{key:1,src:e.url,muted:""},null,8,S)):((0,a.uX)(),(0,a.CE)("div",T,[(0,a.bF)(z,{icon:"file"})]))]),(0,a.Lk)("div",$,[(0,a.Lk)("div",{class:"file-name",title:e.name},(0,i.v_)(e.name),9,_),(0,a.Lk)("div",{class:"file-url",title:e.url},(0,i.v_)(e.url),9,M)]),(0,a.Lk)("div",R,[(0,a.Lk)("div",E,(0,i.v_)(V.formatTime(e.time)),1)]),(0,a.Lk)("div",I,[(0,a.bF)(D,{circle:"",size:"small",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"copy"})]),_:1},8,["onClick"]),(0,a.bF)(D,{circle:"",size:"small",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,a.bF)(D,{circle:"",size:"small",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,a.k6)(()=>[(0,a.bF)(z,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128))])):((0,a.uX)(),(0,a.CE)("div",A,[(0,a.bF)(z,{icon:"history",class:"empty-icon"}),t[5]||(t[5]=(0,a.Lk)("p",null,"暂无上传记录",-1))]))],2)}o(4114),o(8111),o(2489),o(7588),o(1701),o(3110),o(8335);var N={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],viewMode:"grid"}},watch:{show(e){e&&this.loadHistory()}},computed:{groupedHistory(){const e={};return this.historyList.forEach(t=>{const o=new Date(t.time),s=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[s]||(e[s]=[]),e[s].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:{loadHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.historyList=e.sort((e,t)=>t.time-e.time)}catch(e){console.error("Failed to load history",e),this.historyList=[]}},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm("确定要清空所有上传记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=[],localStorage.removeItem("uploadHistory"),this.$message.success("记录已清空")}).catch(()=>{})},deleteItem(e){this.$confirm("确定要删除这条记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time);try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o=t.filter(t=>t.time!==e.time);localStorage.setItem("uploadHistory",JSON.stringify(o)),this.$message.success("记录已删除")}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(),s=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${s}-${l} ${a}:${i}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success("链接已复制")}).catch(()=>{this.$message.error("复制失败")})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(6682)}}},V=o(1241);const z=(0,V.A)(N,[["render",P],["__scopeId","data-v-3d294b36"]]);var D=z,B=o(6975),W=o(1418),H=(o(333),o(4757)),j=o(6018),O=(o(6808),o(200),o(9267)),X=(o(5616),o(5558)),Q=(o(8075),o(6810)),q=(o(4396),o(4885),o(8559)),G=(o(5970),o(9655)),J=(o(2893),o(2086)),K=(o(670),o(8830),o(3597),o(4253)),Y=o(683),Z=(o(5385),o(9623)),ee=(o(6711),o(7358)),te=o(813);o(4896);const oe={class:"upload-form"},se={class:"upload-card-glow",ref:"uploadCardGlow"},le={key:0,class:"upload-card"},ae={class:"paste-card-actions"},ie={class:"upload-list-dashboard-action"},ne={class:"modern-action-group"},re={class:"modern-dropdown-item-content"},ce={class:"modern-action-btn modern-action-btn-danger"},de=["href"],ue={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},pe=["src"],he=["src","onError"],me={key:2,style:{width:"10vw","border-radius":"12px"}},fe={class:"upload-list-item-content"},ge={class:"upload-list-item-name-wrapper"},be={key:0,class:"upload-list-item-url"},ye={class:"upload-list-item-url-row"},Ce={class:"upload-list-item-url-row"},ke={key:1,class:"upload-list-item-progress"},we={class:"upload-list-item-action"},ve=["onClick"],Fe=["onClick"];function Le(e,t,n,r,c,d){const u=(0,a.g2)("CameraFilled"),p=te.tk,h=ee.j5,m=Z.WK,f=l.S2,g=Q.Zh,b=Q.MQ,y=Y.Ik,C=(0,a.g2)("List"),k=(0,a.g2)("Checked"),w=(0,a.g2)("Failed"),v=K.$g,F=(0,a.g2)("font-awesome-icon"),L=s.R7,U=X.qi,x=J.c6,S=J.Iy,T=J.dW,$=G.ve,_=(0,a.g2)("Link"),M=(0,a.g2)("Delete"),R=q.kA;return(0,a.uX)(),(0,a.CE)("div",oe,[(0,a.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>d.handleUploadCardMouseMove&&d.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>d.handleUploadCardMouseLeave&&d.handleUploadCardMouseLeave(...e))},[(0,a.Lk)("div",se,null,512),"default"===n.uploadMethod?((0,a.uX)(),(0,a.Wv)(h,{key:0,class:(0,i.C4)(["upload-card",{"is-uploading":c.uploading,"upload-card-busy":c.fileList.length}]),drag:"",multiple:"","http-request":d.uploadFile,onSuccess:d.handleSuccess,"on-error":d.handleError,"before-upload":d.beforeUpload,"on-progress":d.handleProgress,"file-list":c.fileList,"show-file-list":!1},{default:(0,a.k6)(()=>[(0,a.bF)(p,{class:(0,i.C4)(["el-icon--upload",{"upload-list-busy":c.fileList.length}])},{default:(0,a.k6)(()=>[(0,a.bF)(u)]),_:1},8,["class"]),(0,a.Lk)("div",{class:(0,i.C4)(["el-upload__text",{"upload-list-busy":c.fileList.length}])},[...t[7]||(t[7]=[(0,a.Lk)("em",null,"拖拽",-1),(0,a.eW)(),(0,a.Lk)("em",null,"点击",-1),(0,a.eW)(" 或 ",-1),(0,a.Lk)("em",null,"Ctrl + V",-1),(0,a.eW)(" 粘贴上传",-1)])],2)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,a.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,a.uX)(),(0,a.CE)("div",le,[(0,a.bF)(y,{class:(0,i.C4)(["paste-card",{"is-uploading":c.uploading,"upload-card-busy":c.fileList.length}])},{default:(0,a.k6)(()=>[(0,a.bF)(m,{modelValue:c.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>c.pastedUrls=e),class:"upload-card-textarea",placeholder:"粘贴外链上传,多个外链用换行分隔",type:"textarea",rows:c.fileList.length?4:14},null,8,["modelValue","rows"]),(0,a.Lk)("div",ae,[(0,a.bF)(f,{class:"paste-card-upload-button",type:"primary",size:d.pasteCardMethodButtonSize,onClick:d.handleUploadPasteUrls},{default:(0,a.k6)(()=>[...t[8]||(t[8]=[(0,a.eW)(" 上 传 ",-1)])]),_:1},8,["size","onClick"]),(0,a.bF)(b,{modelValue:c.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>c.pasteUploadMethod=e),class:"paste-card-method-group",size:d.pasteCardMethodButtonSize},{default:(0,a.k6)(()=>[(0,a.bF)(g,{label:"save"},{default:(0,a.k6)(()=>[...t[9]||(t[9]=[(0,a.eW)("转存",-1)])]),_:1}),(0,a.bF)(g,{label:"external"},{default:(0,a.k6)(()=>[...t[10]||(t[10]=[(0,a.eW)("外链",-1)])]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,a.Q3)("",!0),(0,a.bF)(y,{class:(0,i.C4)(["upload-list-card",{"upload-list-busy":c.fileList.length,"is-uploading":c.uploading}])},{default:(0,a.k6)(()=>[(0,a.Lk)("div",{class:(0,i.C4)(["upload-list-container",{"upload-list-busy":c.fileList.length}])},[(0,a.bF)(R,{onScroll:d.handleScroll,ref:"scrollContainer"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",{class:(0,i.C4)(["upload-list-dashboard",{"list-scrolled":c.listScrolled}])},[(0,a.bF)(v,{class:"upload-list-dashboard-title"},{default:(0,a.k6)(()=>[(0,a.bF)(p,null,{default:(0,a.k6)(()=>[(0,a.bF)(C)]),_:1}),(0,a.eW)((0,i.v_)(d.uploadingCount+d.waitingCount)+" ",1),(0,a.bF)(p,null,{default:(0,a.k6)(()=>[(0,a.bF)(k)]),_:1}),(0,a.eW)((0,i.v_)(d.uploadSuccessCount)+" ",1),(0,a.bF)(p,null,{default:(0,a.k6)(()=>[(0,a.bF)(w)]),_:1}),(0,a.eW)((0,i.v_)(d.uploadErrorCount),1)]),_:1}),(0,a.Lk)("div",ie,[(0,a.Lk)("div",ne,[(0,a.bF)(L,{disabled:d.disableTooltip,content:"整体复制",placement:"top"},{default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"modern-action-btn",onClick:t[4]||(t[4]=(...e)=>d.copyAll&&d.copyAll(...e))},[(0,a.bF)(F,{icon:"copy"})])]),_:1},8,["disabled"]),(0,a.bF)(L,{disabled:d.disableTooltip,content:"失败重试",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(T,null,{dropdown:(0,a.k6)(()=>[(0,a.bF)(S,{class:"modern-dropdown-menu"},{default:(0,a.k6)(()=>[(0,a.bF)(x,null,{default:(0,a.k6)(()=>[(0,a.Lk)("div",re,[t[11]||(t[11]=(0,a.Lk)("span",null,"自动重试",-1)),(0,a.bF)(U,{modelValue:c.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>c.autoReUpload=e),onChange:d.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("button",{class:"modern-action-btn",onClick:t[5]||(t[5]=(...e)=>d.retryError&&d.retryError(...e))},[(0,a.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled"]),(0,a.bF)(L,{disabled:d.disableTooltip,content:"清空列表",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(T,null,{dropdown:(0,a.k6)(()=>[(0,a.bF)(S,{class:"modern-dropdown-menu"},{default:(0,a.k6)(()=>[(0,a.bF)(x,{onClick:d.clearFileList},{default:(0,a.k6)(()=>[...t[12]||(t[12]=[(0,a.eW)("清空全部",-1)])]),_:1},8,["onClick"]),(0,a.bF)(x,{onClick:d.clearSuccessList},{default:(0,a.k6)(()=>[...t[13]||(t[13]=[(0,a.eW)("清空已上传",-1)])]),_:1},8,["onClick"])]),_:1})]),default:(0,a.k6)(()=>[(0,a.Lk)("button",ce,[(0,a.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled"])])])],2),((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(c.fileList.slice().reverse(),e=>((0,a.uX)(),(0,a.CE)("div",{class:"upload-list-item",key:e.name,span:8},[(0,a.Lk)("a",{href:e.url,target:"_blank",class:"upload-list-item-preview"},[d.isVideo(e.name)?((0,a.uX)(),(0,a.CE)("video",ue,[(0,a.Lk)("source",{src:e.url,type:"video/mp4"},null,8,pe),t[14]||(t[14]=(0,a.eW)(" Your browser does not support the video tag. ",-1))])):d.isImage(e.name)?((0,a.uX)(),(0,a.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:e.url,onError:t=>e.url=o(6682)},null,40,he)):((0,a.uX)(),(0,a.CE)("div",me,[(0,a.bF)(F,{icon:"file",class:"file-icon"})]))],8,de),(0,a.Lk)("div",fe,[(0,a.Lk)("div",ge,[(0,a.bF)(v,{class:"upload-list-item-name",truncated:""},{default:(0,a.k6)(()=>[(0,a.eW)((0,i.v_)(d.truncateFilename(e.name)),1)]),_:2},1024)]),"done"===e.status?((0,a.uX)(),(0,a.CE)("div",be,[(0,a.Lk)("div",ye,[(0,a.bF)(m,{modelValue:e.finalURL,"onUpdate:modelValue":t=>e.finalURL=t,readonly:"",onClick:d.selectAllText,size:d.urlSize},{prepend:(0,a.k6)(()=>[...t[15]||(t[15]=[(0,a.eW)("URL",-1)])]),_:1},8,["modelValue","onUpdate:modelValue","onClick","size"]),(0,a.bF)(m,{modelValue:e.mdURL,"onUpdate:modelValue":t=>e.mdURL=t,readonly:"",onClick:d.selectAllText,size:d.urlSize},{prepend:(0,a.k6)(()=>[...t[16]||(t[16]=[(0,a.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onUpdate:modelValue","onClick","size"])]),(0,a.Lk)("div",Ce,[(0,a.bF)(m,{modelValue:e.htmlURL,"onUpdate:modelValue":t=>e.htmlURL=t,readonly:"",onClick:d.selectAllText,size:d.urlSize},{prepend:(0,a.k6)(()=>[...t[17]||(t[17]=[(0,a.eW)("HTML",-1)])]),_:1},8,["modelValue","onUpdate:modelValue","onClick","size"]),(0,a.bF)(m,{modelValue:e.ubbURL,"onUpdate:modelValue":t=>e.ubbURL=t,readonly:"",onClick:d.selectAllText,size:d.urlSize},{prepend:(0,a.k6)(()=>[...t[18]||(t[18]=[(0,a.eW)("BBCode",-1)])]),_:1},8,["modelValue","onUpdate:modelValue","onClick","size"])])])):((0,a.uX)(),(0,a.CE)("div",ke,[(0,a.bF)($,{percentage:e.progreess,status:e.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,a.Lk)("div",we,[(0,a.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t=>d.handleCopy(e)},[(0,a.bF)(p,null,{default:(0,a.k6)(()=>[(0,a.bF)(_)]),_:1})],8,ve),(0,a.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t=>d.handleRemove(e)},[(0,a.bF)(p,null,{default:(0,a.k6)(()=>[(0,a.bF)(M)]),_:1})],8,Fe)])]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(6573),o(8100),o(7936),o(116),o(8237),o(9577),o(1549),o(9797),o(9631),o(5623),o(4979),o(4603),o(7566),o(8721);var Ue=o(457),xe=o(6334),Se=o(8401),Te={name:"UploadForm",props:{selectedUrlForm:{type:String,default:"url",required:!1},customerCompress:{type:Boolean,default:!0,required:!1},compressQuality:{type:Number,default:4,required:!1},compressBar:{type:Number,default:5,required:!1},serverCompress:{type:Boolean,default:!0,required:!1},uploadChannel:{type:String,default:"telegram",required:!1},channelName:{type:String,default:"",required:!1},uploadNameType:{type:String,default:"default",required:!1},useCustomUrl:{type:String,default:"false",required:!1},customUrlPrefix:{type:String,default:"",required:!1},autoRetry:{type:Boolean,default:!0,required:!1},urlPrefix:{type:String,default:"",required:!1},uploadMethod:{type:String,default:"default",required:!1},uploadFolder:{type:String,default:"",required:!1},convertToWebp:{type:Boolean,default:!1,required:!1}},data(){return{fileList:[],uploading:!1,maxUploading:6,exceptionList:[],listScrolled:!1,fileListLength:0,uploadCount:0,pastedUrls:"",pasteUploadMethod:"save",autoReUpload:!0,maxRetryCount:10,retryTimer:null,retryDelay:12e3,uploadQueue:[],activeUploads:0,maxConcurrentUploads:6,abortControllers:new Map}},watch:{fileList:{handler(){this.fileList.length>this.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){"true"===this.useCustomUrl?this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.customUrlPrefix+e.srcID,e.mdURL=`![${e.name}](${this.customUrlPrefix+e.srcID})`,e.htmlURL=`${e.name}`,e.ubbURL=`[img]${this.customUrlPrefix+e.srcID}[/img]`)}):this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.rootUrl+e.srcID,e.mdURL=`![${e.name}](${this.rootUrl+e.srcID})`,e.htmlURL=`${e.name}`,e.ubbURL=`[img]${this.rootUrl+e.srcID}[/img]`)})},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&this.fileList.forEach(e=>{"external"!==e.uploadChannel&&(e.finalURL=this.customUrlPrefix+e.srcID,e.mdURL=`![${e.name}](${this.customUrlPrefix+e.srcID})`,e.htmlURL=`${e.name}`,e.ubbURL=`[img]${this.customUrlPrefix+e.srcID}[/img]`)})},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,Se.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const a=l.length+4,i=t-a-3;return i<=0?e.substring(0,t-3)+"...":s.substring(0,i)+"..."+s.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),s=o?.uploadChannel||this.uploadChannel;if("external"===s)return void this.uploadSingleFile(e);if("huggingface"===s){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===s){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,s=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==s,a="external"===s?"default":this.uploadNameType,i=new AbortController;this.abortControllers.set(e.file.uid,i);const n=new FormData;if(n.append("file",e.file),"external"===s&&n.append("url",e.file.url),"huggingface"===s)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await this.computeSha256(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,Ue.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+s+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+a+"&autoRetry="+l+"&uploadFolder="+this.uploadFolder,method:"post",data:n,withAuthCode:!0,signal:i.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,s=new AbortController;this.abortControllers.set(e.file.uid,s);const l="discord"===o?9437184:16777216,a=e.file.size,i=Math.ceil(a/l),n=t.serverCompress,r=this.autoRetry&&"external"!==o,c="external"===o?"default":this.uploadNameType;let d=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),d=await this.computeSha256(e.file),console.log("SHA256 computed:",d)}catch(u){console.error("Failed to compute SHA256:",u)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",e.file.type),t.append("totalChunks",i.toString());const p=await(0,Ue.A)({url:"/upload?serverCompress="+n+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+c+"&autoRetry="+r+"&uploadFolder="+this.uploadFolder+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!p.data.success)throw new Error("初始化分块上传失败: "+p.data.message);const h=p.data.uploadId;console.log("分块上传初始化成功,uploadId:",h);const m=this.fileList.find(t=>t.uid===e.file.uid);m&&(m.totalChunks=i,m.uploadId=h);const f=3,g=new Array(i).fill(0);let b=0,y=!1,C="",k=!1;const w=async t=>{if(y||k)return;const d=t*l,p=Math.min(d+l,a),m=e.file.slice(d,p),f=new FormData;f.append("file",m,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",i.toString()),f.append("uploadId",h),f.append("originalFileName",e.file.name),f.append("originalFileType",e.file.type);let b=0;const w=3;while(b{if(y||k)return;const s=Math.round(o.loaded/o.total*100);g[t]=s;const l=Math.round(g.reduce((e,t)=>e+t,0)/i);e.onProgress({percent:l,file:e.file})}})}catch(u){if("CanceledError"===u.name||"ERR_CANCELED"===u.code)return k=!0,void console.log("分块上传已取消:",e.file.name);if(b++,console.warn(`分块 ${t+1}/${i} 上传失败 (重试 ${b}/${w}):`,u),b>=w)throw y=!0,C=`分块 ${t+1}/${i} 上传失败: ${u.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*b))}}},v=[];for(let e=0;e{while(bt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),u.response&&401!==u.response.status?(this.exceptionList.push(e),e.onError(u,e.file)):u.response||(this.exceptionList.push(e),e.onError(u,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.truncateFilename(e.name)+"已删除"})},async cleanupUploadResources(e,t=0){try{await(0,Ue.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 s=o.uploadChannel||this.uploadChannel;if("external"!==s){const s=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+s,o.finalURL=this.rootUrl+s,o.mdURL=`![${t.name}](${this.rootUrl+s})`,o.htmlURL=`${t.name}`,o.ubbURL=`[img]${this.rootUrl+s}[/img]`,o.srcID=s}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.truncateFilename(t.name)+"上传成功"}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(s){this.$message.error(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.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?("url"===this.selectedUrlForm?navigator.clipboard.writeText(e.finalURL):"md"===this.selectedUrlForm?navigator.clipboard.writeText(e.mdURL):"html"===this.selectedUrlForm?navigator.clipboard.writeText(e.htmlURL):"ubb"===this.selectedUrlForm?navigator.clipboard.writeText(e.ubbURL):navigator.clipboard.writeText(e.finalURL),this.$message({type:"success",message:"复制成功"})):this.$message({type:"warning",message:"文件未上传成功,无法复制链接"})},beforeUpload(e){return new Promise(async(t,o)=>{let s=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&&(s=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 a=s.type.includes("image")&&this.customerCompress&&s.size/1024/1024>this.compressBar,i=s.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(a)xe.compressAccurately(s,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(s.name+"压缩后文件过大,无法上传!"),o("文件过大")),this.uploading=!0;const l=new File([t],s.name,{type:t.type});l.uid=e.uid;const a=this.uploadCount++,i=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;0===a?n(l,i):setTimeout(()=>{n(l,i),this.uploadCount--},300*a)}).catch(e=>{this.$message.error(s.name+"压缩失败,无法上传!"),o(e)});else if(i){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!s.type.includes("image")||s.size/1024/1024<10);0===e?n(s,t):setTimeout(()=>{n(s,t),this.uploadCount--},300*e)}else this.$message.error(s.name+"文件过大,无法上传!"),o("文件过大")})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){if("url"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.finalURL}).join("\n");navigator.clipboard.writeText(e)}else if("md"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.mdURL}).join("\n");navigator.clipboard.writeText(e)}else if("html"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.htmlURL}).join("\n");navigator.clipboard.writeText(e)}else if("ubb"===this.selectedUrlForm){const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.ubbURL}).join("\n");navigator.clipboard.writeText(e)}else{const e=this.fileList.map(e=>{if("done"===e.status||"success"===e.status)return e.finalURL}).join("\n");navigator.clipboard.writeText(e)}this.$message({type:"success",message:"整体复制成功"})},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.$message({type:"info",message:"文件列表为空"})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:"成功上传文件已清空"})):this.$message({type:"info",message:"成功上传文件为空"})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,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:a,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{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&Ue.A.post("/api/fetchRes",{url:e},{responseType:"blob"}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const a=o.headers["content-disposition"];if(a){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(a);if(null!=o&&o[1]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(a),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),s="PastedFile"+Date.now()+t+"."+l}const i=o.data,n=new File([i],s,{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:"粘贴板中的URL地址请求失败"})})})},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],o=e.split(".").pop().toLowerCase();return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e.split(".").pop().toLowerCase();return t.includes(o)},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:"无上传失败文件"})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?"自动重试已开启":"自动重试已关闭"}),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:`${e.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await this.computeSha256(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const s=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),l=btoa(String.fromCharCode(...s));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const a=await(0,Ue.A)({url:"/api/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:l,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!a.data.success)throw new Error(a.data.error||"Failed to get upload URL");const i=a.data;if(console.log("Upload info:",i),i.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(i.needsLfs&&i.uploadAction){const{href:t,header:s}=i.uploadAction;if(s?.chunk_size)await this.uploadToHuggingFaceMultipart(e,i,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:s||{},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 n=await(0,Ue.A)({url:"/api/huggingface/commitUpload",method:"post",data:{fullId:i.fullId,filePath:i.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:i.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(s){if("CanceledError"===s.name||"ERR_CANCELED"===s.code||"AbortError"===s.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",s),this.exceptionList.push(e),e.onError(s,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:s}=t,{href:l,header:a}=s,i=parseInt(a.chunk_size),n=Object.keys(a).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${i}`);const r=[],c=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,s=t*i,l=Math.min(s+i,e.file.size),n=e.file.slice(s,l);console.log(`Uploading part ${u}/${c}`);const d=await fetch(a[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!d.ok)throw new Error(`Failed to upload part ${u}: ${d.status}`);const p=d.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)/c*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 d=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(!d.ok){const e=await d.text();throw new Error(`Multipart complete failed: ${d.status} - ${e}`)}console.log("Multipart upload complete")},async computeSha256(e){const t=this.createSha256(),o=4194304;let s=0;while(se>>>t|e<<32-t,i=o=>{const s=new Uint32Array(64);for(let e=0;e<16;e++)s[e]=o[4*e]<<24|o[4*e+1]<<16|o[4*e+2]<<8|o[4*e+3];for(let e=16;e<64;e++){const t=a(s[e-15],7)^a(s[e-15],18)^s[e-15]>>>3,o=a(s[e-2],17)^a(s[e-2],19)^s[e-2]>>>10;s[e]=s[e-16]+t+s[e-7]+o>>>0}let[l,i,n,r,c,d,u,p]=t;for(let t=0;t<64;t++){const o=a(c,6)^a(c,11)^a(c,25),h=c&d^~c&u,m=p+o+h+e[t]+s[t]>>>0,f=a(l,2)^a(l,13)^a(l,22),g=l&i^l&n^i&n,b=f+g>>>0;p=u,u=d,d=c,c=r+m>>>0,r=n,n=i,i=l,l=m+b>>>0}t[0]=t[0]+l>>>0,t[1]=t[1]+i>>>0,t[2]=t[2]+n>>>0,t[3]=t[3]+r>>>0,t[4]=t[4]+c>>>0,t[5]=t[5]+d>>>0,t[6]=t[6]+u>>>0,t[7]=t[7]+p>>>0};return{update(e){l+=e.length;let t=0;if(s>0){const l=64-s,a=Math.min(l,e.length);o.set(e.subarray(0,a),s),s+=a,t=a,64===s&&(i(o),s=0)}while(t+64<=e.length)i(e.subarray(t,t+64)),t+=64;t56&&(o.fill(0,s,64),i(o),s=0),o.fill(0,s,56);const a=new DataView(o.buffer);a.setUint32(56,Math.floor(e/4294967296),!1),a.setUint32(60,e>>>0,!1),i(o);let n="";for(let o=0;o<8;o++)n+=t[o].toString(16).padStart(8,"0");return n}}},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 s=new Image,l=document.createElement("canvas"),a=l.getContext("2d");s.onload=()=>{l.width=s.width,l.height=s.height,a.drawImage(s,0,0),l.toBlob(l=>{if(l){const o=e.name,s=o.lastIndexOf("."),a=s>0?o.substring(0,s)+".webp":o+".webp",i=new File([l],a,{type:"image/webp"});i.uid=e.uid,t(i)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(s.src)},"image/webp",.92)},s.onerror=()=>{URL.revokeObjectURL(s.src),o(new Error("图片加载失败"))},s.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=s+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const $e=(0,V.A)(Te,[["render",Le],["__scopeId","data-v-6a7fc61f"]]);var _e=$e,Me=o(732),Re=o(4453);const Ee={class:"container"},Ie={class:"upload-home"},Ae={href:"https://cfbed.sanyue.de/qa/",target:"_blank",class:"info-container"},Pe={class:"toolbar-manage"},Ne={class:"toolbar"},Ve={class:"header"},ze={class:"title"},De={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},Be={class:"dialog-section"},We={class:"section-content"},He={class:"dialog-section"},je={class:"section-header"},Oe={class:"section-content"},Xe={class:"setting-item"},Qe={key:0,class:"setting-item"},qe={class:"dialog-action"},Ge={class:"dialog-section"},Je={class:"section-content"},Ke={class:"setting-item"},Ye={key:0,class:"setting-item"},Ze={class:"setting-label"},et={class:"setting-item"},tt={class:"setting-item"},ot={class:"setting-label"},st={class:"dialog-section"},lt={class:"section-content"},at={class:"dialog-section"},it={class:"section-header"},nt={class:"section-content"},rt={class:"setting-item"},ct={class:"setting-label"},dt={class:"setting-item"},ut={key:0,class:"setting-item slider-item"},pt={class:"setting-label"},ht={class:"slider-wrapper"},mt={class:"slider-input-wrapper"},ft={key:1,class:"setting-item slider-item"},gt={class:"setting-label"},bt={class:"slider-wrapper"},yt={class:"slider-input-wrapper"},Ct={key:0,class:"dialog-section"},kt={class:"section-header"},wt={class:"section-content"},vt={class:"setting-item"},Ft={class:"dialog-action"},Lt=["innerHTML"],Ut={class:"dialog-footer"};function xt(e,t,o,n,r,c){const d=Re.A,u=(0,a.g2)("font-awesome-icon"),p=s.R7,h=Z.WK,m=l.S2,f=J.c6,g=J.Iy,b=J.dW,y=Me.A,C=_e,k=Q.ll,w=Q.MQ,v=X.qi,F=O.kZ,L=j.P9,U=j.AV,x=H.B8,S=W.lq,T=B.A,$=D;return(0,a.uX)(),(0,a.CE)("div",Ee,[(0,a.Lk)("div",Ie,[(0,a.bF)(d,{class:"toggle-dark-button desktop-only"}),(0,a.bF)(p,{content:"查看文档",placement:"bottom",disabled:c.disableTooltip},{default:(0,a.k6)(()=>[(0,a.Lk)("a",Ae,[(0,a.bF)(u,{icon:"book",class:"info-icon",size:"lg"})])]),_:1},8,["disabled"]),(0,a.bF)(h,{class:(0,i.C4)(["upload-folder",{active:r.isFolderInputActive,"no-announcement":!c.announcementAvailable}]),modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),placeholder:"上传目录",onFocus:t[1]||(t[1]=e=>r.isFolderInputActive=!0),onBlur:t[2]||(t[2]=e=>r.isFolderInputActive=!1)},null,8,["class","modelValue"]),(0,a.bF)(p,{content:"切换上传方式",placement:"bottom",disabled:c.disableTooltip},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:"upload-method-button desktop-only",onClick:c.handleChangeUploadMethod},{default:(0,a.k6)(()=>["default"===r.uploadMethod?((0,a.uX)(),(0,a.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,a.uX)(),(0,a.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,a.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{content:"上传记录",placement:"bottom",disabled:c.disableTooltip},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:"history-button desktop-only",onClick:t[3]||(t[3]=e=>r.showHistory=!0)},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"history",class:"history-icon",size:"lg"})]),_:1})]),_:1},8,["disabled"]),c.announcementAvailable?((0,a.uX)(),(0,a.Wv)(p,{key:0,content:"查看公告",placement:"bottom",disabled:c.disableTooltip},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:"announcement-button desktop-only",onClick:c.handleShowAnnouncement},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"bullhorn",class:"announcement-icon",size:"lg"})]),_:1},8,["onClick"])]),_:1},8,["disabled"])):(0,a.Q3)("",!0),(0,a.bF)(b,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:c.handleMobileMenuCommand},{dropdown:(0,a.k6)(()=>[(0,a.bF)(g,null,{default:(0,a.k6)(()=>[(0,a.bF)(f,{command:"toggleTheme"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:c.getThemeIcon(),style:{"margin-right":"8px"}},null,8,["icon"]),(0,a.eW)(" "+(0,i.v_)(c.getThemeText()),1)]),_:1}),(0,a.bF)(f,{command:"toggleUploadMethod"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{"margin-right":"8px"}},null,8,["icon"]),(0,a.eW)(" "+(0,i.v_)("default"===r.uploadMethod?"粘贴上传":"文件上传"),1)]),_:1}),(0,a.bF)(f,{command:"showHistory"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"history",style:{"margin-right":"8px"}}),t[26]||(t[26]=(0,a.eW)(" 上传记录 ",-1))]),_:1}),(0,a.bF)(f,{command:"showAnnouncement",disabled:!c.announcementAvailable},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"bullhorn",style:{"margin-right":"8px"}}),t[27]||(t[27]=(0,a.eW)(" 查看公告 ",-1))]),_:1},8,["disabled"])]),_:1})]),default:(0,a.k6)(()=>[(0,a.bF)(m,{class:"mobile-more-button"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,a.Lk)("div",Pe,[(0,a.bF)(m,{class:(0,i.C4)(["toolbar-manage-button",{active:r.isToolBarOpen}]),size:"large",onClick:c.handleOpenToolbar,circle:""},{default:(0,a.k6)(()=>[r.isToolBarOpen?((0,a.uX)(),(0,a.Wv)(u,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,a.uX)(),(0,a.Wv)(u,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,a.Lk)("div",Ne,[(0,a.bF)(p,{disabled:c.disableTooltip,content:"上传设置",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:(0,i.C4)(["toolbar-button compress-button",{active:r.isToolBarOpen}]),size:"large",onClick:c.openCompressDialog,circle:""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{disabled:c.disableTooltip,content:"链接格式",placement:"left"},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:(0,i.C4)(["toolbar-button link-button",{active:r.isToolBarOpen}]),size:"large",onClick:c.openUrlDialog,circle:""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{disabled:c.disableTooltip,content:"系统管理",placement:"left"},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:(0,i.C4)(["toolbar-button config-button",{active:r.isToolBarOpen}]),size:"large",onClick:c.handleManage,circle:""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,a.bF)(p,{disabled:c.disableTooltip,content:"退出登录",placement:"left"},{default:(0,a.k6)(()=>[(0,a.bF)(m,{class:(0,i.C4)(["toolbar-button sign-out-button",{active:r.isToolBarOpen}]),size:"large",onClick:c.handleLogout,circle:""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"])]),(0,a.Lk)("div",Ve,[(0,a.bF)(y,{useConfigLink:!0}),(0,a.Lk)("h1",ze,[(0,a.Lk)("a",De,(0,i.v_)(c.ownerName),1),t[28]||(t[28]=(0,a.eW)(" ImgHub",-1))])]),(0,a.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:c.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,a.bF)(F,{title:"链接格式设置",modelValue:r.showUrlDialog,"onUpdate:modelValue":t[8]||(t[8]=e=>r.showUrlDialog=e),width:c.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",Be,[t[33]||(t[33]=(0,a.Lk)("div",{class:"section-header"},[(0,a.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,a.Lk)("div",We,[(0,a.bF)(w,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[4]||(t[4]=e=>r.selectedUrlForm=e),onChange:c.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,a.k6)(()=>[(0,a.bF)(k,{value:"url",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"link",class:"radio-icon"}),t[29]||(t[29]=(0,a.Lk)("span",null,"原始链接",-1))]),_:1}),(0,a.bF)(k,{value:"md",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"code",class:"radio-icon"}),t[30]||(t[30]=(0,a.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,a.bF)(k,{value:"html",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[31]||(t[31]=(0,a.Lk)("span",null,"HTML",-1))]),_:1}),(0,a.bF)(k,{value:"ubb",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[32]||(t[32]=(0,a.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,a.Lk)("div",He,[(0,a.Lk)("div",je,[t[34]||(t[34]=(0,a.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,a.bF)(p,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,a.Lk)("div",Oe,[(0,a.Lk)("div",Xe,[t[35]||(t[35]=(0,a.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,a.bF)(v,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[5]||(t[5]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,a.uX)(),(0,a.CE)("div",Qe,[t[36]||(t[36]=(0,a.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,a.bF)(h,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[6]||(t[6]=e=>r.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,a.Q3)("",!0)])]),(0,a.Lk)("div",qe,[(0,a.bF)(m,{type:"primary",onClick:t[7]||(t[7]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,a.k6)(()=>[...t[37]||(t[37]=[(0,a.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,a.bF)(F,{title:"上传设置",modelValue:r.showCompressDialog,"onUpdate:modelValue":t[22]||(t[22]=e=>r.showCompressDialog=e),width:c.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,a.k6)(()=>[(0,a.Lk)("div",Ge,[t[47]||(t[47]=(0,a.Lk)("div",{class:"section-header"},[(0,a.Lk)("span",{class:"section-title"},"上传渠道")],-1)),(0,a.Lk)("div",Je,[(0,a.Lk)("div",Ke,[t[43]||(t[43]=(0,a.Lk)("span",{class:"setting-label"},"渠道类型",-1)),(0,a.bF)(w,{modelValue:r.uploadChannel,"onUpdate:modelValue":t[9]||(t[9]=e=>r.uploadChannel=e),class:"radio-card-group compact"},{default:(0,a.k6)(()=>[(0,a.bF)(k,{label:"telegram",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"paper-plane",class:"channel-icon"}),t[38]||(t[38]=(0,a.Lk)("span",null,"TG",-1))]),_:1}),(0,a.bF)(k,{label:"cfr2",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"cloud",class:"channel-icon"}),t[39]||(t[39]=(0,a.Lk)("span",null,"R2",-1))]),_:1}),(0,a.bF)(k,{label:"s3",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"database",class:"channel-icon"}),t[40]||(t[40]=(0,a.Lk)("span",null,"S3",-1))]),_:1}),(0,a.bF)(k,{label:"discord",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"comments",class:"channel-icon"}),t[41]||(t[41]=(0,a.Lk)("span",null,"DC",-1))]),_:1}),(0,a.bF)(k,{label:"huggingface",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"robot",class:"channel-icon"}),t[42]||(t[42]=(0,a.Lk)("span",null,"HF",-1))]),_:1})]),_:1},8,["modelValue"])]),c.currentChannelList.length>1?((0,a.uX)(),(0,a.CE)("div",Ye,[(0,a.Lk)("span",Ze,[t[44]||(t[44]=(0,a.eW)(" 渠道名称 ",-1)),(0,a.bF)(p,{content:"选择具体的渠道名称,不选择则使用负载均衡或默认渠道",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,a.bF)(U,{modelValue:r.channelName,"onUpdate:modelValue":t[10]||(t[10]=e=>r.channelName=e),placeholder:"自动选择",clearable:"",class:"setting-input",size:"small"},{default:(0,a.k6)(()=>[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(c.currentChannelList,e=>((0,a.uX)(),(0,a.Wv)(L,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])):(0,a.Q3)("",!0),(0,a.Lk)("div",et,[t[45]||(t[45]=(0,a.Lk)("span",{class:"setting-label"},"上传目录",-1)),(0,a.bF)(h,{modelValue:r.uploadFolder,"onUpdate:modelValue":t[11]||(t[11]=e=>r.uploadFolder=e),placeholder:"请输入上传目录路径",class:"setting-input"},null,8,["modelValue"])]),(0,a.Lk)("div",tt,[(0,a.Lk)("span",ot,[t[46]||(t[46]=(0,a.eW)(" 自动切换 ",-1)),(0,a.bF)(p,{content:"对于非分块上传文件,上传失败自动切换到其他渠道上传",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,a.bF)(v,{modelValue:r.autoRetry,"onUpdate:modelValue":t[12]||(t[12]=e=>r.autoRetry=e)},null,8,["modelValue"])])])]),(0,a.Lk)("div",st,[t[52]||(t[52]=(0,a.Lk)("div",{class:"section-header"},[(0,a.Lk)("span",{class:"section-title"},"文件命名方式")],-1)),(0,a.Lk)("div",lt,[(0,a.bF)(w,{modelValue:r.uploadNameType,"onUpdate:modelValue":t[13]||(t[13]=e=>r.uploadNameType=e),class:"radio-card-group grid-2x2"},{default:(0,a.k6)(()=>[(0,a.bF)(k,{label:"default",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"cog",class:"radio-icon"}),t[48]||(t[48]=(0,a.Lk)("span",null,"默认",-1))]),_:1}),(0,a.bF)(k,{label:"index",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"hashtag",class:"radio-icon"}),t[49]||(t[49]=(0,a.Lk)("span",null,"仅前缀",-1))]),_:1}),(0,a.bF)(k,{label:"origin",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"file-signature",class:"radio-icon"}),t[50]||(t[50]=(0,a.Lk)("span",null,"仅原名",-1))]),_:1}),(0,a.bF)(k,{label:"short",class:"radio-card"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"compress-alt",class:"radio-icon"}),t[51]||(t[51]=(0,a.Lk)("span",null,"短链接",-1))]),_:1})]),_:1},8,["modelValue"])])]),(0,a.Lk)("div",at,[(0,a.Lk)("div",it,[t[53]||(t[53]=(0,a.Lk)("span",{class:"section-title"},"文件预处理",-1)),(0,a.bF)(p,{content:"上传前在本地进行格式转换和压缩,仅对图片文件生效",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,a.Lk)("div",nt,[(0,a.Lk)("div",rt,[(0,a.Lk)("span",ct,[t[54]||(t[54]=(0,a.eW)(" 转换为WebP ",-1)),(0,a.bF)(p,{content:"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,a.bF)(v,{modelValue:r.convertToWebp,"onUpdate:modelValue":t[14]||(t[14]=e=>r.convertToWebp=e)},null,8,["modelValue"])]),(0,a.Lk)("div",dt,[t[55]||(t[55]=(0,a.Lk)("span",{class:"setting-label"},"文件压缩",-1)),(0,a.bF)(v,{modelValue:r.customerCompress,"onUpdate:modelValue":t[15]||(t[15]=e=>r.customerCompress=e)},null,8,["modelValue"])]),r.customerCompress?((0,a.uX)(),(0,a.CE)("div",ut,[(0,a.Lk)("span",pt,[t[56]||(t[56]=(0,a.eW)(" 压缩阈值 ",-1)),(0,a.bF)(p,{content:"设置图片大小阈值,超过此值将自动压缩,单位MB",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,a.Lk)("div",ht,[(0,a.bF)(x,{modelValue:r.compressBar,"onUpdate:modelValue":t[16]||(t[16]=e=>r.compressBar=e),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["modelValue","format-tooltip"]),(0,a.Lk)("div",mt,[(0,a.bF)(S,{modelValue:r.compressBar,"onUpdate:modelValue":t[17]||(t[17]=e=>r.compressBar=e),min:1,max:20,step:1,"value-on-clear":1,size:"small",class:"slider-input","controls-position":"right"},null,8,["modelValue"]),t[57]||(t[57]=(0,a.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,a.Q3)("",!0),r.customerCompress?((0,a.uX)(),(0,a.CE)("div",ft,[(0,a.Lk)("span",gt,[t[58]||(t[58]=(0,a.eW)(" 期望大小 ",-1)),(0,a.bF)(p,{content:"设置压缩后图片大小期望值,单位MB",placement:"top"},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,a.Lk)("div",bt,[(0,a.bF)(x,{modelValue:r.compressQuality,"onUpdate:modelValue":t[18]||(t[18]=e=>r.compressQuality=e),min:.5,max:r.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["modelValue","max","format-tooltip"]),(0,a.Lk)("div",yt,[(0,a.bF)(S,{modelValue:r.compressQuality,"onUpdate:modelValue":t[19]||(t[19]=e=>r.compressQuality=e),min:.5,max:r.compressBar,step:.1,precision:1,"value-on-clear":.5,size:"small",class:"slider-input","controls-position":"right"},null,8,["modelValue","max"]),t[59]||(t[59]=(0,a.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,a.Q3)("",!0)])]),"telegram"===r.uploadChannel?((0,a.uX)(),(0,a.CE)("div",Ct,[(0,a.Lk)("div",kt,[t[60]||(t[60]=(0,a.Lk)("span",{class:"section-title"},"服务端压缩",-1)),(0,a.bF)(p,{content:"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题",placement:"top","raw-content":""},{default:(0,a.k6)(()=>[(0,a.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,a.Lk)("div",wt,[(0,a.Lk)("div",vt,[t[61]||(t[61]=(0,a.Lk)("span",{class:"setting-label"},"开启压缩",-1)),(0,a.bF)(v,{modelValue:r.serverCompress,"onUpdate:modelValue":t[20]||(t[20]=e=>r.serverCompress=e)},null,8,["modelValue"])])])])):(0,a.Q3)("",!0),(0,a.Lk)("div",Ft,[(0,a.bF)(m,{type:"primary",onClick:t[21]||(t[21]=e=>r.showCompressDialog=!1),class:"confirm-btn"},{default:(0,a.k6)(()=>[...t[62]||(t[62]=[(0,a.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"])]),(0,a.bF)(T,{class:"footer"}),(0,a.bF)(F,{title:"公告",modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[24]||(t[24]=e=>r.showAnnouncementDialog=e),width:c.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,a.k6)(()=>[(0,a.Lk)("span",Ut,[(0,a.bF)(m,{type:"primary",onClick:t[23]||(t[23]=e=>r.showAnnouncementDialog=!1)},{default:(0,a.k6)(()=>[...t[63]||(t[63]=[(0,a.eW)("我已知晓!",-1)])]),_:1})])]),default:(0,a.k6)(()=>[(0,a.Lk)("div",{innerHTML:r.announcementContent},null,8,Lt)]),_:1},8,["modelValue","width"]),(0,a.bF)($,{show:r.showHistory,onClose:t[25]||(t[25]=e=>r.showHistory=!1)},null,8,["show"])])}o(3579);var St=o(8903),Tt=o(144),$t=o(4570),_t=o.n($t),Mt={name:"UploadHome",mixins:[St.A],data(){return{selectedUrlForm:(0,Tt.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,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:"",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){this.validateUploadFolder(e)?this.$store.commit("setStoreUploadFolder",e):this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,Se.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},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!1,!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";const o=localStorage.getItem("visitedUploadHome"),s=this.userConfig?.announcement;!o&&s&&(this.announcementContent=s,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:_e,Footer:B.A,ToggleDark:Re.A,Logo:Me.A,UploadHistory:D},methods:{async fetchAvailableChannels(){try{const e=await Ue.A.get("/api/channels");if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,s=this.availableChannels[this.uploadChannel]||[];t&&s.some(e=>e.name===t)?this.channelName=t:o&&s.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e){if(!e||""===e.trim())return!0;if(!e.startsWith("/"))return this.$message.error('上传目录必须以 "/" 开头'),!1;const t=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return t.test(e)?(this.$message.error("上传目录包含非法字符,请使用合法的路径格式"),!1):!e.includes("//")||(this.$message.error("上传目录不能包含连续的斜杠"),!1)},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(){_t().remove("authCode"),this.$router.push("/login"),this.$message.success("已退出登录")},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)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){"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)):"toggleUploadMethod"===e?this.handleChangeUploadMethod():"showHistory"===e?this.showHistory=!0:"showAnnouncement"===e&&this.handleShowAnnouncement()},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?"浅色模式":"light"===this.themeMode?"深色模式":"自动模式"},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?(this.announcementContent=e,this.showAnnouncementDialog=!0):this.$message.info("暂无公告")}}};const Rt=(0,V.A)(Mt,[["render",xt],["__scopeId","data-v-734aaf0a"]]);var Et=Rt},6334:function(e,t,o){e.exports=o(1393)},6682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},6808:function(e,t,o){"use strict";o(5331),o(8785),o(200),o(5970),o(9104)},8075:function(e,t,o){"use strict";o(5331)},8785:function(e,t,o){"use strict";o(5331)},8830:function(e,t,o){"use strict";o(5331)},9104:function(e,t,o){"use strict";o(5331)}}]); -//# sourceMappingURL=655.680e2609.js.map \ No newline at end of file diff --git a/js/655.680e2609.js.gz b/js/655.680e2609.js.gz deleted file mode 100644 index 0c27eea..0000000 Binary files a/js/655.680e2609.js.gz and /dev/null differ diff --git a/js/655.680e2609.js.map b/js/655.680e2609.js.map deleted file mode 100644 index fbf9d1b..0000000 --- a/js/655.680e2609.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/655.680e2609.js","mappings":"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","sources":["webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/UploadHistory.vue?19f6","webpack://sanyue_imghub/./src/components/UploadHistory.vue","webpack://sanyue_imghub/./src/components/UploadHistory.vue?4b6c","webpack://sanyue_imghub/./src/components/UploadForm.vue?527f","webpack://sanyue_imghub/./src/components/UploadForm.vue","webpack://sanyue_imghub/./src/components/UploadForm.vue?0da8","webpack://sanyue_imghub/./src/views/UploadHome.vue?b83c","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./node_modules/image-conversion/index.js"],"sourcesContent":["!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, toDisplayString as _toDisplayString, 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 key: 0,\n class: \"history-content\"\n};\nconst _hoisted_6 = {\n class: \"timeline-header\"\n};\nconst _hoisted_7 = {\n class: \"date-label\"\n};\nconst _hoisted_8 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_9 = {\n class: \"grid-preview\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = [\"src\"];\nconst _hoisted_12 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_13 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_14 = {\n class: \"grid-actions\"\n};\nconst _hoisted_15 = {\n class: \"grid-info\"\n};\nconst _hoisted_16 = [\"title\"];\nconst _hoisted_17 = {\n class: \"upload-time\"\n};\nconst _hoisted_18 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_19 = {\n class: \"list-preview\"\n};\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = [\"src\"];\nconst _hoisted_22 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_23 = {\n class: \"list-info\"\n};\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = [\"title\"];\nconst _hoisted_26 = {\n class: \"list-meta\"\n};\nconst _hoisted_27 = {\n class: \"upload-time\"\n};\nconst _hoisted_28 = {\n class: \"list-actions\"\n};\nconst _hoisted_29 = {\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, [_cache[3] || (_cache[3] = _createElementVNode(\"h2\", null, \"历史记录\", -1)), _createElementVNode(\"span\", _hoisted_3, \"共 \" + _toDisplayString($data.historyList.length) + \" 条\", 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: \"切换视图\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tooltip, {\n content: \"清空记录\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _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\", _hoisted_5, [(_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_6, [_cache[4] || (_cache[4] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_7, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, (item, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_9, [$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_10)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_11)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_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_15, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_16), _createElementVNode(\"div\", _hoisted_17, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, (item, index) => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_19, [$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_20)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_21)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_24), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_25)]), _createElementVNode(\"div\", _hoisted_26, [_createElementVNode(\"div\", _hoisted_27, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_28, [_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))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _cache[5] || (_cache[5] = _createElementVNode(\"p\", null, \"暂无上传记录\", -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\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/esnext.json.parse.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 viewMode: 'grid' // 'grid' or 'list'\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.loadHistory();\n }\n }\n },\n computed: {\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 loadHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n\n // Sort by time desc\n this.historyList = history.sort((a, b) => b.time - a.time);\n } catch (e) {\n console.error('Failed to load history', e);\n this.historyList = [];\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm('确定要清空所有上传记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n localStorage.removeItem('uploadHistory');\n this.$message.success('记录已清空');\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm('确定要删除这条记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n // Remove from list\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n\n // Update localStorage\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newHistory = history.filter(i => i.time !== item.time);\n localStorage.setItem('uploadHistory', JSON.stringify(newHistory));\n this.$message.success('记录已删除');\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('链接已复制');\n }).catch(() => {\n this.$message.error('复制失败');\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=3d294b36&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=3d294b36&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-3d294b36\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_4 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_5 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_6 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_7 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_8 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nconst _hoisted_9 = [\"href\"];\nconst _hoisted_10 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_11 = [\"src\"];\nconst _hoisted_12 = [\"src\", \"onError\"];\nconst _hoisted_13 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_14 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_15 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_16 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_17 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_18 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_19 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_20 = {\n class: \"upload-list-item-action\"\n};\nconst _hoisted_21 = [\"onClick\"];\nconst _hoisted_22 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_Delete = _resolveComponent(\"Delete\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [...(_cache[7] || (_cache[7] = [_createElementVNode(\"em\", null, \"拖拽\", -1), _createTextVNode(), _createElementVNode(\"em\", null, \"点击\", -1), _createTextVNode(\" 或 \", -1), _createElementVNode(\"em\", null, \"Ctrl + V\", -1), _createTextVNode(\" 粘贴上传\", -1)]))], 2)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: \"粘贴外链上传,多个外链用换行分隔\",\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"rows\"]), _createElementVNode(\"div\", _hoisted_4, [_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(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\" 上 传 \", -1)]))]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"转存\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"外链\", -1)]))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"整体复制\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"失败重试\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_cache[11] || (_cache[11] = _createElementVNode(\"span\", null, \"自动重试\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"清空列表\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [...(_cache[12] || (_cache[12] = [_createTextVNode(\"清空全部\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [...(_cache[13] || (_cache[13] = [_createTextVNode(\"清空已上传\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"upload-list-item\",\n key: file.name,\n span: 8\n }, [_createElementVNode(\"a\", {\n href: file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo(file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_10, [_createElementVNode(\"source\", {\n src: file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_11), _cache[14] || (_cache[14] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage(file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: file.url,\n onError: $event => file.url = require('@/assets/404.png')\n }, null, 40, _hoisted_12)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_9), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", _hoisted_15, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename(file.name)), 1)]),\n _: 2\n }, 1024)]), file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [_createElementVNode(\"div\", _hoisted_17, [_createVNode(_component_el_input, {\n modelValue: file.finalURL,\n \"onUpdate:modelValue\": $event => file.finalURL = $event,\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[15] || (_cache[15] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: file.mdURL,\n \"onUpdate:modelValue\": $event => file.mdURL = $event,\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[16] || (_cache[16] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_18, [_createVNode(_component_el_input, {\n modelValue: file.htmlURL,\n \"onUpdate:modelValue\": $event => file.htmlURL = $event,\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[17] || (_cache[17] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: file.ubbURL,\n \"onUpdate:modelValue\": $event => file.ubbURL = $event,\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[18] || (_cache[18] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [_createVNode(_component_el_progress, {\n percentage: file.progreess,\n status: file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_20, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: $event => $options.handleCopy(file)\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })], 8, _hoisted_21), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: $event => $options.handleRemove(file)\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })], 8, _hoisted_22)])]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.array-buffer.detached.js\";\nimport \"core-js/modules/es.array-buffer.transfer.js\";\nimport \"core-js/modules/es.array-buffer.transfer-to-fixed-length.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.json.stringify.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.json.parse.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 \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nexport default {\n name: 'UploadForm',\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n if (this.useCustomUrl === 'true') {\n this.fileList.forEach(item => {\n if (item.uploadChannel === 'external') {\n return;\n }\n item.finalURL = this.customUrlPrefix + item.srcID;\n item.mdURL = `![${item.name}](${this.customUrlPrefix + item.srcID})`;\n item.htmlURL = `\"${item.name}\"`;\n item.ubbURL = `[img]${this.customUrlPrefix + item.srcID}[/img]`;\n });\n } else {\n this.fileList.forEach(item => {\n if (item.uploadChannel === 'external') {\n return;\n }\n item.finalURL = this.rootUrl + item.srcID;\n item.mdURL = `![${item.name}](${this.rootUrl + item.srcID})`;\n item.htmlURL = `\"${item.name}\"`;\n item.ubbURL = `[img]${this.rootUrl + item.srcID}[/img]`;\n });\n }\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n this.fileList.forEach(item => {\n if (item.uploadChannel === 'external') {\n return;\n }\n item.finalURL = this.customUrlPrefix + item.srcID;\n item.mdURL = `![${item.name}](${this.customUrlPrefix + item.srcID})`;\n item.htmlURL = `\"${item.name}\"`;\n item.ubbURL = `[img]${this.customUrlPrefix + item.srcID}[/img]`;\n });\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await this.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=' + this.uploadFolder,\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await this.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', file.file.type);\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=' + this.uploadFolder + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error('初始化分块上传失败: ' + 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', file.file.type);\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=' + this.uploadFolder + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || '上传过程中发生错误');\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: '分块上传完成,正在合并文件,请耐心等待...',\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', file.file.type);\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=' + this.uploadFolder + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.truncateFilename(file.name) + '已删除'\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 fileItem.finalURL = this.rootUrl + srcID;\n fileItem.mdURL = `![${file.name}](${this.rootUrl + srcID})`;\n fileItem.htmlURL = `\"${file.name}\"`;\n fileItem.ubbURL = `[img]${this.rootUrl + srcID}[/img]`;\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.truncateFilename(file.name) + '上传成功'\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.truncateFilename(file.name) + '上传失败');\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.truncateFilename(file.name) + '上传失败');\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: '文件未上传成功,无法复制链接'\n });\n return;\n }\n if (this.selectedUrlForm === 'url') {\n navigator.clipboard.writeText(file.finalURL);\n } else if (this.selectedUrlForm === 'md') {\n navigator.clipboard.writeText(file.mdURL);\n } else if (this.selectedUrlForm === 'html') {\n navigator.clipboard.writeText(file.htmlURL);\n } else if (this.selectedUrlForm === 'ubb') {\n navigator.clipboard.writeText(file.ubbURL);\n } else {\n navigator.clipboard.writeText(file.finalURL);\n }\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(processedFile.name + '压缩后文件过大,无法上传!');\n reject('文件过大');\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(processedFile.name + '压缩失败,无法上传!');\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(processedFile.name + '文件过大,无法上传!');\n reject('文件过大');\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 if (this.selectedUrlForm === 'url') {\n const urls = this.fileList.map(item => {\n if (item.status === 'done' || item.status === 'success') {\n return item.finalURL;\n }\n }).join('\\n');\n navigator.clipboard.writeText(urls);\n } else if (this.selectedUrlForm === 'md') {\n const urls = this.fileList.map(item => {\n if (item.status === 'done' || item.status === 'success') {\n return item.mdURL;\n }\n }).join('\\n');\n navigator.clipboard.writeText(urls);\n } else if (this.selectedUrlForm === 'html') {\n const urls = this.fileList.map(item => {\n if (item.status === 'done' || item.status === 'success') {\n return item.htmlURL;\n }\n }).join('\\n');\n navigator.clipboard.writeText(urls);\n } else if (this.selectedUrlForm === 'ubb') {\n const urls = this.fileList.map(item => {\n if (item.status === 'done' || item.status === 'success') {\n return item.ubbURL;\n }\n }).join('\\n');\n navigator.clipboard.writeText(urls);\n } else {\n const urls = this.fileList.map(item => {\n if (item.status === 'done' || item.status === 'success') {\n return item.finalURL;\n }\n }).join('\\n');\n navigator.clipboard.writeText(urls);\n }\n this.$message({\n type: 'success',\n message: '整体复制成功'\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: '文件列表已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '文件列表为空'\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: '成功上传文件已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '成功上传文件为空'\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob'\n }).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: '粘贴板中的URL地址请求失败'\n });\n });\n }\n });\n }\n }\n },\n selectAllText(event) {\n // 复制到剪贴板\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: '复制失败'\n });\n });\n },\n // 判断是否为图片类型\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\n const extension = fileName.split('.').pop().toLowerCase();\n return imageExtensions.includes(extension);\n },\n // 判断是否为视频类型\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName.split('.').pop().toLowerCase();\n return videoExtensions.includes(extension);\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: '无上传失败文件'\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? '自动重试已开启' : '自动重试已关闭'\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: `${file.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await this.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: '/api/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/api/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 // 计算文件的 SHA256 哈希(用于 HuggingFace 上传)\n // 使用增量哈希算法,支持任意大小文件\n async computeSha256(file) {\n // 使用纯 JavaScript 实现的增量 SHA256\n // 这样可以分块处理大文件,避免内存溢出\n const sha256 = this.createSha256();\n const CHUNK_SIZE = 4 * 1024 * 1024; // 4MB chunks - 更小的块减少内存压力\n let offset = 0;\n while (offset < file.size) {\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size));\n const buffer = await chunk.arrayBuffer();\n sha256.update(new Uint8Array(buffer));\n offset += CHUNK_SIZE;\n\n // 每处理 20MB 打印一次进度\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`);\n }\n }\n return sha256.digest();\n },\n // 创建增量 SHA256 哈希器(纯 JavaScript 实现)\n createSha256() {\n // SHA256 常量\n const K = new Uint32Array([0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n let H = new Uint32Array([0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]);\n let buffer = new Uint8Array(64);\n let bufferLength = 0;\n let totalLength = 0;\n const rotr = (x, n) => x >>> n | x << 32 - n;\n const processBlock = block => {\n const W = new Uint32Array(64);\n for (let i = 0; i < 16; i++) {\n W[i] = block[i * 4] << 24 | block[i * 4 + 1] << 16 | block[i * 4 + 2] << 8 | block[i * 4 + 3];\n }\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ W[i - 15] >>> 3;\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ W[i - 2] >>> 10;\n W[i] = W[i - 16] + s0 + W[i - 7] + s1 >>> 0;\n }\n let [a, b, c, d, e, f, g, h] = H;\n for (let i = 0; i < 64; i++) {\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\n const ch = e & f ^ ~e & g;\n const temp1 = h + S1 + ch + K[i] + W[i] >>> 0;\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\n const maj = a & b ^ a & c ^ b & c;\n const temp2 = S0 + maj >>> 0;\n h = g;\n g = f;\n f = e;\n e = d + temp1 >>> 0;\n d = c;\n c = b;\n b = a;\n a = temp1 + temp2 >>> 0;\n }\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n H[5] = H[5] + f >>> 0;\n H[6] = H[6] + g >>> 0;\n H[7] = H[7] + h >>> 0;\n };\n return {\n update(data) {\n totalLength += data.length;\n let offset = 0;\n if (bufferLength > 0) {\n const needed = 64 - bufferLength;\n const toCopy = Math.min(needed, data.length);\n buffer.set(data.subarray(0, toCopy), bufferLength);\n bufferLength += toCopy;\n offset = toCopy;\n if (bufferLength === 64) {\n processBlock(buffer);\n bufferLength = 0;\n }\n }\n while (offset + 64 <= data.length) {\n processBlock(data.subarray(offset, offset + 64));\n offset += 64;\n }\n if (offset < data.length) {\n buffer.set(data.subarray(offset), 0);\n bufferLength = data.length - offset;\n }\n },\n digest() {\n const bitLength = totalLength * 8;\n\n // Padding\n buffer[bufferLength++] = 0x80;\n if (bufferLength > 56) {\n buffer.fill(0, bufferLength, 64);\n processBlock(buffer);\n bufferLength = 0;\n }\n buffer.fill(0, bufferLength, 56);\n\n // Length in bits (big-endian, 64-bit)\n const view = new DataView(buffer.buffer);\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false);\n view.setUint32(60, bitLength >>> 0, false);\n processBlock(buffer);\n\n // Convert to hex\n let hex = '';\n for (let i = 0; i < 8; i++) {\n hex += H[i].toString(16).padStart(8, '0');\n }\n return hex;\n }\n };\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error('图片加载失败'));\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=6a7fc61f&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=6a7fc61f&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-6a7fc61f\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n href: \"https://cfbed.sanyue.de/qa/\",\n target: \"_blank\",\n class: \"info-container\"\n};\nconst _hoisted_4 = {\n class: \"toolbar-manage\"\n};\nconst _hoisted_5 = {\n class: \"toolbar\"\n};\nconst _hoisted_6 = {\n class: \"header\"\n};\nconst _hoisted_7 = {\n class: \"title\"\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-content\"\n};\nconst _hoisted_11 = {\n class: \"dialog-section\"\n};\nconst _hoisted_12 = {\n class: \"section-header\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"setting-item\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_16 = {\n class: \"dialog-action\"\n};\nconst _hoisted_17 = {\n class: \"dialog-section\"\n};\nconst _hoisted_18 = {\n class: \"section-content\"\n};\nconst _hoisted_19 = {\n class: \"setting-item\"\n};\nconst _hoisted_20 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_21 = {\n class: \"setting-label\"\n};\nconst _hoisted_22 = {\n class: \"setting-item\"\n};\nconst _hoisted_23 = {\n class: \"setting-item\"\n};\nconst _hoisted_24 = {\n class: \"setting-label\"\n};\nconst _hoisted_25 = {\n class: \"dialog-section\"\n};\nconst _hoisted_26 = {\n class: \"section-content\"\n};\nconst _hoisted_27 = {\n class: \"dialog-section\"\n};\nconst _hoisted_28 = {\n class: \"section-header\"\n};\nconst _hoisted_29 = {\n class: \"section-content\"\n};\nconst _hoisted_30 = {\n class: \"setting-item\"\n};\nconst _hoisted_31 = {\n class: \"setting-label\"\n};\nconst _hoisted_32 = {\n class: \"setting-item\"\n};\nconst _hoisted_33 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_34 = {\n class: \"setting-label\"\n};\nconst _hoisted_35 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_36 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_37 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_38 = {\n class: \"setting-label\"\n};\nconst _hoisted_39 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_40 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_41 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_42 = {\n class: \"section-header\"\n};\nconst _hoisted_43 = {\n class: \"section-content\"\n};\nconst _hoisted_44 = {\n class: \"setting-item\"\n};\nconst _hoisted_45 = {\n class: \"dialog-action\"\n};\nconst _hoisted_46 = [\"innerHTML\"];\nconst _hoisted_47 = {\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_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_input = _resolveComponent(\"el-input\");\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_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_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\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_tooltip, {\n content: \"查看文档\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createElementVNode(\"a\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n class: \"info-icon\",\n size: \"lg\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_input, {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive,\n 'no-announcement': !$options.announcementAvailable\n }]),\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n placeholder: \"上传目录\",\n onFocus: _cache[1] || (_cache[1] = $event => $data.isFolderInputActive = true),\n onBlur: _cache[2] || (_cache[2] = $event => $data.isFolderInputActive = false)\n }, null, 8, [\"class\", \"modelValue\"]), _createVNode(_component_el_tooltip, {\n content: \"切换上传方式\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n content: \"上传记录\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"history-button desktop-only\",\n onClick: _cache[3] || (_cache[3] = $event => $data.showHistory = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"history-icon\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), $options.announcementAvailable ? (_openBlock(), _createBlock(_component_el_tooltip, {\n key: 0,\n content: \"查看公告\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"announcement-button desktop-only\",\n onClick: $options.handleShowAnnouncement\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n class: \"announcement-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _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 \"margin-right\": \"8px\"\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 \"margin-right\": \"8px\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? '粘贴上传' : '文件上传'), 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 \"margin-right\": \"8px\"\n }\n }), _cache[26] || (_cache[26] = _createTextVNode(\" 上传记录 \", -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 \"margin-right\": \"8px\"\n }\n }), _cache[27] || (_cache[27] = _createTextVNode(\" 查看公告 \", -1))]),\n _: 1\n }, 8, [\"disabled\"])]),\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\", _hoisted_4, [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-manage-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleOpenToolbar,\n circle: \"\"\n }, {\n default: _withCtx(() => [!$data.isToolBarOpen ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"bars\",\n class: \"manage-icon\",\n size: \"lg\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"times\",\n class: \"manage-icon\",\n size: \"lg\"\n }))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"上传设置\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button compress-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openCompressDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"compress-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"链接格式\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button link-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openUrlDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"link-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"系统管理\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button config-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleManage,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"config-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"退出登录\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button sign-out-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleLogout,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"sign-out-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])]), _createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"h1\", _hoisted_7, [_createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[28] || (_cache[28] = _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: \"链接格式设置\",\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_cache[33] || (_cache[33] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $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 }), _cache[29] || (_cache[29] = _createElementVNode(\"span\", null, \"原始链接\", -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[30] || (_cache[30] = _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[31] || (_cache[31] = _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[32] || (_cache[32] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_cache[34] || (_cache[34] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"自定义链接\", -1)), _createVNode(_component_el_tooltip, {\n content: \"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_cache[35] || (_cache[35] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[36] || (_cache[36] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[7] || (_cache[7] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[37] || (_cache[37] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_el_dialog, {\n title: \"上传设置\",\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[22] || (_cache[22] = $event => $data.showCompressDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_17, [_cache[47] || (_cache[47] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"上传渠道\")], -1)), _createElementVNode(\"div\", _hoisted_18, [_createElementVNode(\"div\", _hoisted_19, [_cache[43] || (_cache[43] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"渠道类型\", -1)), _createVNode(_component_el_radio_group, {\n modelValue: $data.uploadChannel,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => $data.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_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"channel-icon\"\n }), _cache[38] || (_cache[38] = _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_font_awesome_icon, {\n icon: \"cloud\",\n class: \"channel-icon\"\n }), _cache[39] || (_cache[39] = _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_font_awesome_icon, {\n icon: \"database\",\n class: \"channel-icon\"\n }), _cache[40] || (_cache[40] = _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_font_awesome_icon, {\n icon: \"comments\",\n class: \"channel-icon\"\n }), _cache[41] || (_cache[41] = _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_font_awesome_icon, {\n icon: \"robot\",\n class: \"channel-icon\"\n }), _cache[42] || (_cache[42] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])]), $options.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_createElementVNode(\"span\", _hoisted_21, [_cache[44] || (_cache[44] = _createTextVNode(\" 渠道名称 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"选择具体的渠道名称,不选择则使用负载均衡或默认渠道\",\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 })]), _createVNode(_component_el_select, {\n modelValue: $data.channelName,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => $data.channelName = $event),\n placeholder: \"自动选择\",\n clearable: \"\",\n class: \"setting-input\",\n size: \"small\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.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, [\"modelValue\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_22, [_cache[45] || (_cache[45] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"上传目录\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[11] || (_cache[11] = $event => $data.uploadFolder = $event),\n placeholder: \"请输入上传目录路径\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])]), _createElementVNode(\"div\", _hoisted_23, [_createElementVNode(\"span\", _hoisted_24, [_cache[46] || (_cache[46] = _createTextVNode(\" 自动切换 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"对于非分块上传文件,上传失败自动切换到其他渠道上传\",\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 })]), _createVNode(_component_el_switch, {\n modelValue: $data.autoRetry,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $data.autoRetry = $event)\n }, null, 8, [\"modelValue\"])])])]), _createElementVNode(\"div\", _hoisted_25, [_cache[52] || (_cache[52] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件命名方式\")], -1)), _createElementVNode(\"div\", _hoisted_26, [_createVNode(_component_el_radio_group, {\n modelValue: $data.uploadNameType,\n \"onUpdate:modelValue\": _cache[13] || (_cache[13] = $event => $data.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 }), _cache[48] || (_cache[48] = _createElementVNode(\"span\", null, \"默认\", -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 }), _cache[49] || (_cache[49] = _createElementVNode(\"span\", null, \"仅前缀\", -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 }), _cache[50] || (_cache[50] = _createElementVNode(\"span\", null, \"仅原名\", -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 }), _cache[51] || (_cache[51] = _createElementVNode(\"span\", null, \"短链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\"])])]), _createElementVNode(\"div\", _hoisted_27, [_createElementVNode(\"div\", _hoisted_28, [_cache[53] || (_cache[53] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件预处理\", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前在本地进行格式转换和压缩,仅对图片文件生效\",\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 })]), _createElementVNode(\"div\", _hoisted_29, [_createElementVNode(\"div\", _hoisted_30, [_createElementVNode(\"span\", _hoisted_31, [_cache[54] || (_cache[54] = _createTextVNode(\" 转换为WebP \", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传\",\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 })]), _createVNode(_component_el_switch, {\n modelValue: $data.convertToWebp,\n \"onUpdate:modelValue\": _cache[14] || (_cache[14] = $event => $data.convertToWebp = $event)\n }, null, 8, [\"modelValue\"])]), _createElementVNode(\"div\", _hoisted_32, [_cache[55] || (_cache[55] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"文件压缩\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.customerCompress,\n \"onUpdate:modelValue\": _cache[15] || (_cache[15] = $event => $data.customerCompress = $event)\n }, null, 8, [\"modelValue\"])]), $data.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [_createElementVNode(\"span\", _hoisted_34, [_cache[56] || (_cache[56] = _createTextVNode(\" 压缩阈值 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置图片大小阈值,超过此值将自动压缩,单位MB\",\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 })]), _createElementVNode(\"div\", _hoisted_35, [_createVNode(_component_el_slider, {\n modelValue: $data.compressBar,\n \"onUpdate:modelValue\": _cache[16] || (_cache[16] = $event => $data.compressBar = $event),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"modelValue\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_36, [_createVNode(_component_el_input_number, {\n modelValue: $data.compressBar,\n \"onUpdate:modelValue\": _cache[17] || (_cache[17] = $event => $data.compressBar = $event),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n size: \"small\",\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\"]), _cache[57] || (_cache[57] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $data.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [_createElementVNode(\"span\", _hoisted_38, [_cache[58] || (_cache[58] = _createTextVNode(\" 期望大小 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置压缩后图片大小期望值,单位MB\",\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 })]), _createElementVNode(\"div\", _hoisted_39, [_createVNode(_component_el_slider, {\n modelValue: $data.compressQuality,\n \"onUpdate:modelValue\": _cache[18] || (_cache[18] = $event => $data.compressQuality = $event),\n min: 0.5,\n max: $data.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"modelValue\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_40, [_createVNode(_component_el_input_number, {\n modelValue: $data.compressQuality,\n \"onUpdate:modelValue\": _cache[19] || (_cache[19] = $event => $data.compressQuality = $event),\n min: 0.5,\n max: $data.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n size: \"small\",\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"modelValue\", \"max\"]), _cache[59] || (_cache[59] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $data.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_41, [_createElementVNode(\"div\", _hoisted_42, [_cache[60] || (_cache[60] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"服务端压缩\", -1)), _createVNode(_component_el_tooltip, {\n content: \"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_43, [_createElementVNode(\"div\", _hoisted_44, [_cache[61] || (_cache[61] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"开启压缩\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.serverCompress,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_45, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[21] || (_cache[21] = $event => $data.showCompressDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[62] || (_cache[62] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: \"公告\",\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[24] || (_cache[24] = $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_47, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[23] || (_cache[23] = $event => $data.showAnnouncementDialog = false)\n }, {\n default: _withCtx(() => [...(_cache[63] || (_cache[63] = [_createTextVNode(\"我已知晓!\", -1)]))]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_46)]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[25] || (_cache[25] = $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.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport UploadHistory from '@/components/UploadHistory.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport cookies from 'vue-cookies';\nimport { mapGetters } from 'vuex';\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 isToolBarOpen: false,\n //是否打开工具栏\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\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 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 // 验证上传文件夹路径的合法性\n if (this.validateUploadFolder(val)) {\n this.$store.commit('setStoreUploadFolder', val);\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 // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', false, 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\n // 首次访问公告\n const visited = localStorage.getItem('visitedUploadHome');\n const announcement = this.userConfig?.announcement;\n if (!visited && announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n localStorage.setItem('visitedUploadHome', 'true');\n }\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels');\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 if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path) {\n // 如果路径为空,返回true(允许空路径)\n if (!path || path.trim() === '') {\n return true;\n }\n\n // 检查路径是否以/开头\n if (!path.startsWith('/')) {\n this.$message.error('上传目录必须以 \"/\" 开头');\n return false;\n }\n\n // 检查路径是否包含非法字符\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\n if (invalidChars.test(path)) {\n this.$message.error('上传目录包含非法字符,请使用合法的路径格式');\n return false;\n }\n\n // 检查路径是否包含连续的斜杠\n if (path.includes('//')) {\n this.$message.error('上传目录不能包含连续的斜杠');\n return false;\n }\n return true;\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 cookies.remove('authCode');\n this.$router.push('/login');\n this.$message.success('已退出登录');\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 handleOpenToolbar() {\n this.isToolBarOpen = !this.isToolBarOpen;\n // 等过渡动画结束,向active类添加pointer-events属性,使其可以点击\n setTimeout(() => {\n const buttons = document.querySelectorAll('.toolbar-button');\n buttons.forEach(button => {\n button.style.pointerEvents = this.isToolBarOpen ? 'auto' : 'none';\n });\n }, 300);\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 === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\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 '浅色模式';\n if (this.themeMode === 'light') return '深色模式';\n return '自动模式';\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n } else {\n this.$message.info('暂无公告');\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=734aaf0a&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=734aaf0a&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-734aaf0a\"]])\n\nexport default __exports__","module.exports = require(\"./build/conversion.js\");\n"],"names":["t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","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","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","fetch","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","key","_hoisted_6","_hoisted_7","_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","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tooltip","show","historyList","content","placement","circle","onClick","toggleViewMode","icon","viewMode","_","clearHistory","$event","$emit","groupedHistory","group","date","items","item","index","time","isImage","name","url","loading","onError","args","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","title","formatTime","props","Boolean","data","watch","val","loadHistory","computed","groups","forEach","dateStr","getFullYear","String","getMonth","padStart","getDate","push","keys","map","mounted","savedMode","localStorage","getItem","methods","history","JSON","parse","console","error","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","newHistory","stringify","fileName","imageExtensions","extension","pop","toLowerCase","includes","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","__exports__","ref","style","autoplay","playsinline","loop","_component_CameraFilled","_component_el_icon","_component_el_upload","_component_el_input","_component_el_radio_button","_component_el_radio_group","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_text","_component_el_switch","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_el_progress","_component_Link","_component_Delete","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","modelValue","pastedUrls","placeholder","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","label","onScroll","handleScroll","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","slice","reverse","file","span","truncated","truncateFilename","status","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","handleCopy","handleRemove","selectedUrlForm","required","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadFolder","convertToWebp","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","setTimeout","$refs","scrollContainer","setScrollTop","deep","srcID","rootUrl","immediate","$store","commit","innerWidth","location","protocol","host","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","filename","maxLength","lastDotIndex","lastIndexOf","ext","substring","keepEnd","keepStart","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","max","needServerCompress","abortController","AbortController","set","formData","FormData","append","log","sha256","computeSha256","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","round","loaded","total","onProgress","percent","res","code","response","finally","delete","CHUNK_SIZE","fileSize","totalChunks","ceil","precomputedSha256","initFormData","initResponse","message","uploadId","maxConcurrency","chunkProgress","Array","fill","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","async","start","chunkIndex","end","min","chunk","retryCount","maxRetries","totalPercent","reduce","warn","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","event","urls","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","headers","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","scrollTop","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","arrayBuffer","fileSample","btoa","fromCharCode","uploadInfoRes","fileType","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","undefined","etag","partNumber","progress","completeResponse","oid","createSha256","offset","buffer","update","digest","K","Uint32Array","H","bufferLength","totalLength","rotr","x","processBlock","block","W","s0","s1","S1","ch","temp1","S0","maj","temp2","needed","toCopy","subarray","bitLength","view","DataView","setUint32","floor","hex","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","opacity","beforeDestroy","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_component_ToggleDark","_component_Logo","_component_UploadForm","_component_el_radio","_component_el_dialog","_component_el_option","_component_el_select","_component_el_slider","_component_el_input_number","_component_Footer","_component_UploadHistory","isFolderInputActive","announcementAvailable","onFocus","onBlur","handleChangeUploadMethod","showHistory","handleShowAnnouncement","trigger","onCommand","handleMobileMenuCommand","command","getThemeIcon","getThemeText","isToolBarOpen","handleOpenToolbar","openCompressDialog","openUrlDialog","handleManage","handleLogout","useConfigLink","ownerName","showUrlDialog","dialogWidth","changeUrlForm","showCompressDialog","currentChannelList","clearable","step","precision","showAnnouncementDialog","center","footer","innerHTML","announcementContent","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","storeUploadFolder","userConfig","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","getters","useDarkMode","visited","components","UploadForm","Footer","ToggleDark","Logo","UploadHistory","defaultChannelName","path","startsWith","invalidChars","$router","defaultValue","num","parseFloat","buttons","querySelectorAll","button","pointerEvents","info"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/655.680e2609.js.map.gz b/js/655.680e2609.js.map.gz deleted file mode 100644 index ec1ca8c..0000000 Binary files a/js/655.680e2609.js.map.gz and /dev/null differ diff --git a/js/667.bbd60d43.js b/js/667.bbd60d43.js deleted file mode 100644 index 38ac5ca..0000000 --- a/js/667.bbd60d43.js +++ /dev/null @@ -1,2 +0,0 @@ -(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[667],{1114:function(e,t,i){"use strict";function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function n(e,t){if("object"!=s(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function a(e){var t=n(e,"string");return"symbol"==s(t)?t:t+""}function r(e,t,i){return(t=a(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}i.d(t,{A:function(){return r}})},1583:function(e,t,i){var s,n,a;i(4114),function(i,r){n=[],s=r,a="function"===typeof s?s.apply(t,n):s,void 0===a||(e.exports=a)}(0,function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,r,o,l=[],c=e.length,h=c;n=function(e,i){i.length&&l.push(e),h--,h||t(l)};while(c--)a=e[c],r=i[a],r?n(a,r):(o=s[a]=s[a]||[],o.push(n))}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)while(n.length)n[0](e,t),n.splice(0,1)}}function r(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var a,r,l,c=document,h=s.async,d=(s.numRetries||0)+1,u=s.before||e,p=t.replace(/[\?|#].*$/,""),m=t.replace(/^(css|img|module|nomodule)!/,"");if(n=n||0,/(^css!|\.css$)/.test(p))l=c.createElement("link"),l.rel="stylesheet",l.href=m,a="hideFocus"in l,a&&l.relList&&(a=0,l.rel="preload",l.as="style");else if(/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(p))l=c.createElement("img"),l.src=m;else if(l=c.createElement("script"),l.src=m,l.async=void 0===h||h,r="noModule"in l,/^module!/.test(p)){if(!r)return i(t,"l");l.type="module"}else if(/^nomodule!/.test(p)&&r)return i(t,"l");l.onload=l.onerror=l.onbeforeload=function(e){var r=e.type[0];if(a)try{l.sheet.cssText.length||(r="e")}catch(c){18!=c.code&&(r="e")}if("e"==r){if(n+=1,nt){var i=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}return function(){function t(e,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,t),f(e)?this.element=e:p(e)&&(this.element=document.querySelector(e)),f(this.element)&&b(this.element.rangeTouch)&&(this.config=s({},n,{},i),this.init())}return i=t,o=[{key:"setup",value:function(e){var i=1(i=100/l.width*(n.clientX-l.left))?i=0:100i?i-=(100-2*i)*c:50u.handleToggleClick&&u.handleToggleClick(...e))},[(0,s.bF)(n.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(p,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.5em",color:"var(--theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,a.C4)(["theme_toggle_svg",{dark:d.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,s.Lk)("mask",r,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:d.isDark?"50%":"100%",cy:d.isDark?"23%":"0%",r:d.isDark?"9":"5"},null,8,o)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMask)"},null,8,l),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,c)],2))]),_:1})])}var d={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))}}},u=i(1241);const p=(0,u.A)(d,[["render",h],["__scopeId","data-v-466b2b5c"]]);var m=p},9667:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return as}});var s=i(6768),n=i(5130),a=i(4232);const r=["src"],o=["src"],l={key:2,class:"video-placeholder"},c={class:"audio-cover"},h=["src"],d={key:1,class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},u={class:"audio-info"},p={class:"audio-title"},m={key:0,class:"audio-artist"},g=["src"],f={key:4,class:"audio-placeholder"},y={class:"audio-name"};function b(e,t,i,b,v,w){return(0,s.uX)(),(0,s.CE)("div",{class:"tm-viewport",ref:"viewport",onPointerdown:t[3]||(t[3]=(...e)=>w.onPointerDown&&w.onPointerDown(...e)),onPointermove:t[4]||(t[4]=(...e)=>w.onPointerMove&&w.onPointerMove(...e)),onPointerup:t[5]||(t[5]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onPointercancel:t[6]||(t[6]=(...e)=>w.onPointerUp&&w.onPointerUp(...e)),onDblclick:t[7]||(t[7]=(0,n.D$)((...e)=>w.onDblClick&&w.onDblClick(...e),["prevent"]))},[i.isImage?((0,s.uX)(),(0,s.CE)("img",{key:0,class:"tm-media",src:i.src,draggable:"false",style:(0,a.Tr)(w.mediaStyle),onLoad:t[0]||(t[0]=(...e)=>w.onLoad&&w.onLoad(...e))},null,44,r)):i.isVideo&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"tm-video-wrap",onPointerdown:t[1]||(t[1]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("video",{ref:"videoEl",class:"plyr-video",src:i.src,playsinline:""},null,8,o)],32)):i.isVideo?((0,s.uX)(),(0,s.CE)("div",l,[...t[8]||(t[8]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M8 5v14l11-7z"})],-1)])])):i.isAudio&&i.isActive?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"tm-audio-wrap",onPointerdown:t[2]||(t[2]=(0,n.D$)(()=>{},["stop"]))},[(0,s.Lk)("div",c,[v.audioCover?((0,s.uX)(),(0,s.CE)("img",{key:0,src:v.audioCover,class:"cover-img"},null,8,h)):((0,s.uX)(),(0,s.CE)("svg",d,[...t[9]||(t[9]=[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"},null,-1)])]))]),(0,s.Lk)("div",u,[(0,s.Lk)("div",p,(0,a.v_)(v.audioTitle),1),v.audioArtist?((0,s.uX)(),(0,s.CE)("div",m,(0,a.v_)(v.audioArtist),1)):(0,s.Q3)("",!0)]),(0,s.Lk)("audio",{ref:"audioEl",class:"plyr-audio",src:i.src},null,8,g)],32)):i.isAudio?((0,s.uX)(),(0,s.CE)("div",f,[t[10]||(t[10]=(0,s.Lk)("svg",{class:"audio-icon-large",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",y,(0,a.v_)(v.audioTitle),1)])):(0,s.Q3)("",!0)],544)}i(6573),i(8100),i(7936),i(8111),i(7588),i(9577),i(1549),i(9797),i(9631),i(5623),i(4603),i(7566),i(8721);var v=i(1114),w=(i(2489),i(1701),i(8335),i(1148),i(116),i(4114),i(3579),i(3975));const k=e=>null!==e&&"undefined"!==typeof e?e.constructor:null,T=(e,t)=>Boolean(e&&t&&e instanceof t),C=e=>null===e||"undefined"===typeof e,A=e=>k(e)===Object,S=e=>k(e)===Number&&!Number.isNaN(e),x=e=>k(e)===String,E=e=>k(e)===Boolean,M=e=>"function"===typeof e,L=e=>Array.isArray(e),P=e=>T(e,WeakMap),I=e=>T(e,NodeList),$=e=>k(e)===Text,N=e=>T(e,Event),D=e=>T(e,KeyboardEvent),F=e=>T(e,window.TextTrackCue)||T(e,window.VTTCue),_=e=>T(e,TextTrack)||!C(e)&&x(e.kind),R=e=>T(e,Promise)&&M(e.then);function O(e){return null!==e&&"object"===typeof e&&1===e.nodeType&&"object"===typeof e.style&&"object"===typeof e.ownerDocument}function H(e){return C(e)||(x(e)||L(e)||I(e))&&!e.length||A(e)&&!Object.keys(e).length}function V(e){if(T(e,window.URL))return!0;if(!x(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!H(new URL(t).hostname)}catch{return!1}}var j={nullOrUndefined:C,object:A,number:S,string:x,boolean:E,function:M,array:L,weakMap:P,nodeList:I,element:O,textNode:$,event:N,keyboardEvent:D,cue:F,track:_,promise:R,url:V,empty:H};const q=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find(t=>void 0!==e.style[t]);return!!j.string(i)&&t[i]})();function B(e,t){setTimeout(()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch{}},t)}i(8237),i(3110);function U(e){return JSON.parse(JSON.stringify(e))}function X(e,t){return t.split(".").reduce((e,t)=>e&&e[t],e)}function z(e={},...t){if(!t.length)return e;const i=t.shift();return j.object(i)?(Object.keys(i).forEach(t=>{j.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),z(e[t],i[t])):Object.assign(e,{[t]:i[t]})}),z(e,...t)):e}function W(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)})}function K(e,t){j.element(e)&&!j.empty(t)&&Object.entries(t).filter(([,e])=>!j.nullOrUndefined(e)).forEach(([t,i])=>e.setAttribute(t,i))}function Y(e,t,i){const s=document.createElement(e);return j.object(t)&&K(s,t),j.string(i)&&(s.textContent=i),s}function Q(e,t){j.element(e)&&j.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)}function J(e,t,i,s){j.element(t)&&t.appendChild(Y(e,i,s))}function G(e){j.nodeList(e)||j.array(e)?Array.from(e).forEach(G):j.element(e)&&j.element(e.parentNode)&&e.parentNode.removeChild(e)}function Z(e){if(!j.element(e))return;let{length:t}=e.childNodes;while(t>0)e.removeChild(e.lastChild),t-=1}function ee(e,t){return j.element(t)&&j.element(t.parentNode)&&j.element(e)?(t.parentNode.replaceChild(e,t),e):null}function te(e,t){if(!j.string(e)||j.empty(e))return{};const i={},s=z({},t);return e.split(",").forEach(e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,""),r=a.split("="),[o]=r,l=r.length>1?r[1].replace(/["']/g,""):"",c=t.charAt(0);switch(c){case".":j.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[o]=l;break;default:break}}),z(s,i)}function ie(e,t){if(!j.element(e))return;let i=t;j.boolean(i)||(i=!e.hidden),e.hidden=i}function se(e,t,i){if(j.nodeList(e))return Array.from(e).map(e=>se(e,t,i));if(j.element(e)){let s="toggle";return"undefined"!==typeof i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function ne(e,t){return j.element(e)&&e.classList.contains(t)}function ae(e,t){const{prototype:i}=Element;function s(){return Array.from(document.querySelectorAll(t)).includes(this)}const n=i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||s;return n.call(e,t)}function re(e,t){const{prototype:i}=Element;function s(){let e=this;do{if(ae.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}const n=i.closest||s;return n.call(e,t)}function oe(e){return this.elements.container.querySelectorAll(e)}function le(e){return this.elements.container.querySelector(e)}function ce(e=null,t=!1){j.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const he={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},de={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t){const i=de[e]||"html5"!==t,s=i&&de.rangeInput;return{api:i,ui:s}},pip:(()=>document.pictureInPictureEnabled&&!Y("video").disablePictureInPicture)(),airplay:j.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(j.empty(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(he).includes(i)&&(i+=`; codecs="${he[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch{return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==q,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches};var ue=de;const pe=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch{}return e})();function me(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||j.empty(t)||!j.function(i))return;const r=t.split(" ");let o=a;pe&&(o={passive:n,capture:a}),r.forEach(t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?"addEventListener":"removeEventListener"](t,i,o)})}function ge(e,t="",i,s=!0,n=!1){me.call(this,e,t,i,!0,s,n)}function fe(e,t="",i,s=!0,n=!1){me.call(this,e,t,i,!1,s,n)}function ye(e,t="",i,s=!0,n=!1){const a=(...r)=>{fe(e,t,a,s,n),i.apply(this,r)};me.call(this,e,t,a,!0,s,n)}function be(e,t="",i=!1,s={}){if(!j.element(e)||j.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ve(){this&&this.eventListeners&&(this.eventListeners.forEach(e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)}),this.eventListeners=[])}function we(){return new Promise(e=>this.ready?setTimeout(e,0):ge.call(this,this.elements.container,"ready",e)).then(()=>{})}function ke(e){j.promise(e)&&e.then(null,()=>{})}function Te(e){return j.array(e)?e.filter((t,i)=>e.indexOf(t)===i):e}function Ce(e,t){return j.array(e)&&e.length?e.reduce((e,i)=>Math.abs(i-t)({...e,[t/i]:[t,i]}),{});function xe(e){if(!j.array(e)&&(!j.string(e)||!e.includes(":")))return!1;const t=j.array(e)?e:e.split(":");return t.map(Number).every(j.number)}function Ee(e){if(!j.array(e)||!e.every(j.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function Me(e){const t=e=>xe(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!j.empty(this.embed)&&j.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Ee(i)}function Le(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Me.call(this,e);if(!j.array(i))return{};const[s,n]=Ee(i),a=Ae(`aspect-ratio: ${s}/${n}`),r=100/s*n;if(a?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${r}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*Number.parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-r)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:r,ratio:i}}function Pe(e,t,i=.05){const s=e/t,n=Ce(Object.keys(Se),s);return Math.abs(n-s)<=i?Se[n]:[e,t]}function Ie(){const e=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight||0,window.innerHeight||0);return[e,t]}const $e={getSources(){if(!this.isHTML5)return[];const e=Array.from(this.media.querySelectorAll("source"));return e.filter(e=>{const t=e.getAttribute("type");return!!j.empty(t)||ue.mime.call(this,t)})},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:$e.getSources.call(this).map(e=>Number(e.getAttribute("size"))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,j.empty(this.config.ratio)||Le.call(e),Object.defineProperty(e.media,"quality",{get(){const t=$e.getSources.call(e),i=t.find(t=>t.getAttribute("src")===e.source);return i&&Number(i.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&j.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=$e.getSources.call(e),s=i.find(e=>Number(e.getAttribute("size"))===t);if(!s)return;const{currentTime:n,paused:a,preload:r,readyState:o,playbackRate:l}=e.media;e.media.src=s.getAttribute("src"),("none"!==r||o)&&(e.once("loadedmetadata",()=>{e.speed=l,e.currentTime=n,a||ke(e.play())}),e.media.load())}be.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(G($e.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};var Ne=$e;const De=Boolean(window.document.documentMode),Fe=/Edge/.test(navigator.userAgent),_e="WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),Re=/iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1,Oe="MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,He=/iPad|iPhone|iPod/i.test(navigator.userAgent)&&navigator.maxTouchPoints>1;var Ve={isIE:De,isEdge:Fe,isWebKit:_e,isIPhone:Re,isIPadOS:Oe,isIos:He};function je(e){return`${e}-${Math.floor(1e4*Math.random())}`}function qe(e,...t){return j.empty(e)?e:e.toString().replace(/\{(\d+)\}/g,(e,i)=>t[i].toString())}function Be(e,t){return 0===e||0===t||Number.isNaN(e)||Number.isNaN(t)?0:(e/t*100).toFixed(2)}function Ue(e="",t="",i=""){return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString())}function Xe(e=""){return e.toString().replace(/\w\S*/g,e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())}function ze(e=""){let t=e.toString();return t=Ue(t,"-"," "),t=Ue(t,"_"," "),t=Xe(t),Ue(t," ","")}function We(e=""){let t=e.toString();return t=ze(t),t.charAt(0).toLowerCase()+t.slice(1)}function Ke(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.textContent}function Ye(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const Qe={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},Je={get(e="",t={}){if(j.empty(e)||j.empty(t))return"";let i=X(t.i18n,e);if(j.empty(i))return Object.keys(Qe).includes(e)?Qe[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach(([e,t])=>{i=Ue(i,e,t)}),i}};var Ge=Je;class Ze{constructor(e){(0,v.A)(this,"get",e=>{if(!Ze.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(j.empty(t))return null;const i=JSON.parse(t);return j.string(e)&&e.length?i[e]:i}),(0,v.A)(this,"set",e=>{if(!Ze.supported||!this.enabled)return;if(!j.object(e))return;let t=this.get();j.empty(t)&&(t={}),z(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch{}}),this.enabled=e.config.storage.enabled,this.key=e.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch{return!1}}}var et=Ze;function tt(e,t="text",i=!1){return new Promise((s,n)=>{try{const n=new XMLHttpRequest;if(!("withCredentials"in n))return;i&&(n.withCredentials=!0),n.addEventListener("load",()=>{if("text"===t)try{s(JSON.parse(n.responseText))}catch{s(n.responseText)}else s(n.response)}),n.addEventListener("error",()=>{throw new Error(n.status)}),n.open("GET",e,!0),n.responseType=t,n.send()}catch(a){n(a)}})}function it(e,t){if(!j.string(e))return;const i="cache",s=j.string(t);let n=!1;const a=()=>null!==document.getElementById(t),r=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement("afterbegin",e)};if(!s||!a()){const a=et.supported,o=document.createElement("div");if(o.setAttribute("hidden",""),s&&o.setAttribute("id",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);r(o,t.content)}}tt(e).then(e=>{if(!j.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch{}r(o,e)}}).catch(()=>{})}}const st=e=>Math.trunc(e/60/60%60,10),nt=e=>Math.trunc(e/60%60,10),at=e=>Math.trunc(e%60,10);function rt(e=0,t=!1,i=!1){if(!j.number(e))return rt(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=st(e);const a=nt(e),r=at(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(r)}`}const ot={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||Ve.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=le.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:oe.call(this,this.config.selectors.buttons.play),pause:le.call(this,this.config.selectors.buttons.pause),restart:le.call(this,this.config.selectors.buttons.restart),rewind:le.call(this,this.config.selectors.buttons.rewind),fastForward:le.call(this,this.config.selectors.buttons.fastForward),mute:le.call(this,this.config.selectors.buttons.mute),pip:le.call(this,this.config.selectors.buttons.pip),airplay:le.call(this,this.config.selectors.buttons.airplay),settings:le.call(this,this.config.selectors.buttons.settings),captions:le.call(this,this.config.selectors.buttons.captions),fullscreen:le.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=le.call(this,this.config.selectors.progress),this.elements.inputs={seek:le.call(this,this.config.selectors.inputs.seek),volume:le.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:le.call(this,this.config.selectors.display.buffer),currentTime:le.call(this,this.config.selectors.display.currentTime),duration:le.call(this,this.config.selectors.display.duration)},j.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i="http://www.w3.org/2000/svg",s=ot.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");K(a,z(t,{"aria-hidden":"true",focusable:"false"}));const r=document.createElementNS(i,"use"),o=`${n}-${e}`;return"href"in r&&r.setAttributeNS("http://www.w3.org/1999/xlink","href",o),r.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),a.appendChild(r),a},createLabel(e,t={}){const i=Ge.get(e,this.config),s={...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")};return Y("span",s,i)},createBadge(e){if(j.empty(e))return null;const t=Y("span",{class:this.config.classNames.menu.value});return t.appendChild(Y("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=z({},t);let s=We(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])}),"button"!==n.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").includes(this.config.classNames.control)||z(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case"play":n.toggle=!0,n.label="play",n.labelPressed="pause",n.icon="play",n.iconPressed="pause";break;case"mute":n.toggle=!0,n.label="mute",n.labelPressed="unmute",n.icon="volume",n.iconPressed="muted";break;case"captions":n.toggle=!0,n.label="enableCaptions",n.labelPressed="disableCaptions",n.icon="captions-off",n.iconPressed="captions-on";break;case"fullscreen":n.toggle=!0,n.label="enterFullscreen",n.labelPressed="exitFullscreen",n.icon="enter-fullscreen",n.iconPressed="exit-fullscreen";break;case"play-large":i.class+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:j.empty(n.label)&&(n.label=s),j.empty(n.icon)&&(n.icon=e)}const a=Y(n.element);return n.toggle?(a.appendChild(ot.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(ot.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(ot.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(ot.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(ot.createIcon.call(this,n.icon)),a.appendChild(ot.createLabel.call(this,n.label))),z(i,te(this.config.selectors.buttons[s],i)),K(a,i),"play"===s?(j.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=Y("input",z(te(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":Ge.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,ot.updateRangeFill.call(this,i),w.setup(i),i},createProgress(e,t){const i=Y("progress",z(te(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild(Y("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?Ge.get(t,this.config):"";i.textContent=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=te(this.config.selectors.display[e],t),s=Y("div",z(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":Ge.get(e,this.config),role:"timer"}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){ge.call(this,e,"keydown keyup",i=>{if(![" ","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=ae(e,'[role="menuitemradio"]');if(!s&&[" ","ArrowRight"].includes(i.key))ot.showMenuPanel.call(this,t,!0);else{let t;" "!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,j.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,j.element(t)||(t=e.parentNode.lastElementChild)),ce.call(this,t,!0))}},!1),ge.call(this,e,"keyup",e=>{"Return"===e.key&&ot.focusFirstMenuItem.call(this,null,!0)})},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const r=te(this.config.selectors.inputs[i]),o=Y("button",z(r,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${r.class?r.class:""}`.trim(),"aria-checked":a,value:e})),l=Y("span");l.innerHTML=s,j.element(n)&&l.appendChild(n),o.appendChild(l),Object.defineProperty(o,"checked",{enumerable:!0,get(){return"true"===o.getAttribute("aria-checked")},set(e){e&&Array.from(o.parentNode.children).filter(e=>ae(e,'[role="menuitemradio"]')).forEach(e=>e.setAttribute("aria-checked","false")),o.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(o,"click keyup",t=>{if(!j.keyboardEvent(t)||" "===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=Number.parseFloat(e);break;default:break}ot.showMenuPanel.call(this,"home",j.keyboardEvent(t))}},i,!1),ot.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!j.number(e))return e;const i=st(this.duration)>0;return rt(e,i,t)},updateTimeDisplay(e=null,t=0,i=!1){j.element(e)&&j.number(t)&&(e.textContent=ot.formatTime(t,i))},updateVolume(){this.supported.ui&&(j.element(this.elements.inputs.volume)&&ot.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),j.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){j.element(e)&&(e.value=t,ot.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!j.event(e))return;let t=0;const i=(e,t)=>{const i=j.number(t)?t:0,s=j.element(e)?e:this.elements.display.buffer;if(j.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];j.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":t=Be(this.currentTime,this.duration),"timeupdate"===e.type&&ot.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered);break;default:break}},updateRangeFill(e){const t=j.event(e)?e.target:e;if(j.element(t)&&"range"===t.getAttribute("type")){if(ae(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=ot.formatTime(this.currentTime),i=ot.formatTime(this.duration),s=Ge.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(ae(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);(Ve.isWebKit||Ve.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){if(!this.config.tooltips.seek||!j.element(this.elements.inputs.seek)||!j.element(this.elements.display.seekTooltip)||0===this.duration)return;const t=this.elements.display.seekTooltip,i=`${this.config.classNames.tooltip}--visible`,s=e=>se(t,i,e);if(this.touch)return void s(!1);let n=0;const a=this.elements.progress.getBoundingClientRect();if(j.event(e)){const t=e.pageX-e.clientX;n=100/a.width*(e.pageX-a.left-t)}else{if(!ne(t,i))return;n=Number.parseFloat(t.style.left,10)}n<0?n=0:n>100&&(n=100);const r=this.duration/100*n;t.textContent=ot.formatTime(r);const o=this.config.markers?.points?.find(({time:e})=>e===Math.round(r));o&&t.insertAdjacentHTML("afterbegin",`${o.label}
`),t.style.left=`${n}%`,j.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&s("mouseenter"===e.type)},timeUpdate(e){const t=!j.element(this.elements.display.duration)&&this.config.invertTime;ot.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||ot.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return ie(this.elements.display.currentTime,!0),void ie(this.elements.progress,!0);j.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=j.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&ot.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&ot.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&ot.setMarkers.call(this),ot.updateSeekTooltip.call(this)},toggleMenuButton(e,t){ie(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=j.empty(i)?this[e]:i,j.empty(n)&&(n=this.config[e].default),!j.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(j.element(a)||(a=s&&s.querySelector('[role="menu"]')),!j.element(a))return;const r=this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`);r.innerHTML=ot.getLabel.call(this,e,n);const o=a&&a.querySelector(`[value="${n}"]`);j.element(o)&&(o.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?Ge.get("normal",this.config):`${t}×`;case"quality":if(j.number(t)){const e=Ge.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return Xe(t);case"captions":return ut.getLabel.call(this);default:return null}},setQualityMenu(e){if(!j.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');j.array(e)&&(this.options.quality=Te(e).filter(e=>this.config.quality.options.includes(e)));const s=!j.empty(this.options.quality)&&this.options.quality.length>1;if(ot.toggleMenuButton.call(this,t,s),Z(i),ot.checkMenu.call(this),!s)return;const n=e=>{const t=Ge.get(`qualityBadge.${e}`,this.config);return t.length?ot.createBadge.call(this,t):null};this.options.quality.sort((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1}).forEach(e=>{ot.createMenuItem.call(this,{value:e,list:i,type:t,title:ot.getLabel.call(this,"quality",e),badge:n(e)})}),ot.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!j.element(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=ut.getTracks.call(this),s=Boolean(i.length);if(ot.toggleMenuButton.call(this,e,s),Z(t),ot.checkMenu.call(this),!s)return;const n=i.map((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:ut.getLabel.call(this,e),badge:e.language&&ot.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"}));n.unshift({value:-1,checked:!this.captions.toggled,title:Ge.get("disabled",this.config),list:t,type:"language"}),n.forEach(ot.createMenuItem.bind(this)),ot.updateSetting.call(this,e,t)},setSpeedMenu(){if(!j.element(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter(e=>e>=this.minimumSpeed&&e<=this.maximumSpeed);const i=!j.empty(this.options.speed)&&this.options.speed.length>1;ot.toggleMenuButton.call(this,e,i),Z(t),ot.checkMenu.call(this),i&&(this.options.speed.forEach(i=>{ot.createMenuItem.call(this,{value:i,list:t,type:e,title:ot.getLabel.call(this,"speed",i)})}),ot.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!j.empty(e)&&Object.values(e).some(e=>!e.hidden);ie(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;j.element(i)||(i=Object.values(this.elements.settings.panels).find(e=>!e.hidden));const s=i.querySelector('[role^="menuitem"]');ce.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!j.element(t)||!j.element(i))return;const{hidden:s}=t;let n=s;if(j.boolean(e))n=e;else if(j.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(j.event(e)){const s=j.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),ie(t,!n),se(this.elements.container,this.config.classNames.menu.open,n),n&&j.keyboardEvent(e)?ot.focusFirstMenuItem.call(this,null,!0):n||s||ce.call(this,i,j.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return G(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!j.element(i))return;const s=i.parentNode,n=Array.from(s.children).find(e=>!e.hidden);if(ue.transitions&&!ue.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=ot.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",fe.call(this,s,q,t))};ge.call(this,s,q,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}ie(n,!0),ie(i,!1),ot.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;j.element(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:r,setSpeedMenu:o,showMenuPanel:l}=ot;this.elements.controls=null,j.array(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=Y("div",te(this.config.selectors.controls.wrapper));this.elements.controls=c;const h={class:"plyr__controls__item"};return Te(j.array(this.config.controls)?this.config.controls:[]).forEach(r=>{if("restart"===r&&c.appendChild(i.call(this,"restart",h)),"rewind"===r&&c.appendChild(i.call(this,"rewind",h)),"play"===r&&c.appendChild(i.call(this,"play",h)),"fast-forward"===r&&c.appendChild(i.call(this,"fast-forward",h)),"progress"===r){const t=Y("div",{class:`${h.class} plyr__progress__container`}),i=Y("div",te(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=Y("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===r&&c.appendChild(a.call(this,"currentTime",h)),"duration"===r&&c.appendChild(a.call(this,"duration",h)),"mute"===r||"volume"===r){let{volume:t}=this.elements;if(j.element(t)&&c.contains(t)||(t=Y("div",z({},h,{class:`${h.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===r&&t.appendChild(i.call(this,"mute")),"volume"===r&&!Ve.isIos&&!Ve.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",z(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===r&&c.appendChild(i.call(this,"captions",h)),"settings"===r&&!j.empty(this.config.settings)){const s=Y("div",z({},h,{class:`${h.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=Y("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=Y("div"),r=Y("div",{id:`plyr-settings-${e.id}-home`}),o=Y("div",{role:"menu"});r.appendChild(o),a.appendChild(r),this.elements.settings.panels.home=r,this.config.settings.forEach(i=>{const s=Y("button",z(te(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),ge.call(this,s,"click",()=>{l.call(this,i,!1)});const n=Y("span",null,Ge.get(i,this.config)),r=Y("span",{class:this.config.classNames.menu.value});r.innerHTML=e[i],n.appendChild(r),s.appendChild(n),o.appendChild(s);const c=Y("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),h=Y("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});h.appendChild(Y("span",{"aria-hidden":!0},Ge.get(i,this.config))),h.appendChild(Y("span",{class:this.config.classNames.hidden},Ge.get("menuBack",this.config))),ge.call(this,c,"keydown",e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),l.call(this,"home",!0))},!1),ge.call(this,h,"click",()=>{l.call(this,"home",!1)}),c.appendChild(h),c.appendChild(Y("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c}),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===r&&ue.pip&&c.appendChild(i.call(this,"pip",h)),"airplay"===r&&ue.airplay&&c.appendChild(i.call(this,"airplay",h)),"download"===r){const e=z({},h,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!j.url(t)&&this.isEmbed&&z(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===r&&c.appendChild(i.call(this,"fullscreen",h))}),this.isHTML5&&r.call(this,Ne.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=ot.getIconUrl.call(this);e.cors&&it(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;j.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),j.element(this.config.controls)||j.string(this.config.controls)?e=this.config.controls:(e=ot.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:ut.getLabel.call(this)}),i=!1);const s=e=>{let i=e;return Object.entries(t).forEach(([e,t])=>{i=Ue(i,`{${e}}`,t)}),i};let n;i&&j.string(this.config.controls)&&(e=s(e)),j.string(this.config.selectors.controls.container)&&(n=document.querySelector(this.config.selectors.controls.container)),j.element(n)||(n=this.elements.container);const a=j.element(e)?"insertAdjacentElement":"insertAdjacentHTML";if(n[a]("afterbegin",e),j.element(this.elements.controls)||ot.findElements.call(this),!j.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute("aria-pressed","false"),Object.defineProperty(e,"pressed",{configurable:!0,enumerable:!0,get(){return ne(e,t)},set(i=!1){se(e,t,i),e.setAttribute("aria-pressed",i?"true":"false")}})};Object.values(this.elements.buttons).filter(Boolean).forEach(t=>{j.array(t)||j.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)})}if(Ve.isEdge&&B(n),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=oe.call(this,i);Array.from(s).forEach(e=>{se(e,this.config.classNames.hidden,!1),se(e,this.config.classNames.tooltip,!0)})}},setMediaMetadata(){try{"mediaSession"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch{}},setMarkers(){if(!this.duration||this.elements.markers)return;const e=this.config.markers?.points?.filter(({time:e})=>e>0&&ese(s,n,e);e.forEach(e=>{const t=Y("span",{class:this.config.classNames.marker},""),n=e.time/this.duration*100+"%";s&&(t.addEventListener("mouseenter",()=>{e.label||(s.style.left=n,s.innerHTML=e.label,a(!0))}),t.addEventListener("mouseleave",()=>{a(!1)})),t.addEventListener("click",()=>{this.currentTime=e.time}),t.style.left=n,i.appendChild(t)}),t.appendChild(i),this.config.tooltips.seek||(s=Y("span",{class:this.config.classNames.tooltip},""),t.appendChild(s)),this.elements.markers={points:i,tip:s},this.elements.progress.appendChild(t)}};var lt=ot;function ct(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch{return null}}function ht(e){const t=new URLSearchParams;return j.object(e)&&Object.entries(e).forEach(([e,i])=>{t.set(e,i)}),t}const dt={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!ue.textTracks)return void(j.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this));if(j.element(this.elements.captions)||(this.elements.captions=Y("div",te(this.config.selectors.captions)),this.elements.captions.setAttribute("dir","auto"),Q(this.elements.captions,this.elements.wrapper)),Ve.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach(e=>{const t=e.getAttribute("src"),i=ct(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&tt(t,"blob").then(t=>{e.setAttribute("src",window.URL.createObjectURL(t))}).catch(()=>{G(e)})})}const e=navigator.languages||[navigator.language||navigator.userLanguage||"en"],t=Te(e.map(e=>e.split("-")[0]));let i=(this.storage.get("language")||this.captions.language||this.config.captions.language||"auto").toLowerCase();"auto"===i&&([i]=t);let s=this.storage.get("captions")||this.captions.active;if(j.boolean(s)||({active:s}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:s,language:i,languages:t}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";ge.call(this,this.media.textTracks,e,dt.update.bind(this))}setTimeout(dt.update.bind(this),0)},update(){const e=dt.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find(e=>e.language===i));this.isHTML5&&this.isVideo&&e.filter(e=>!s.get(e)).forEach(e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),ge.call(this,e,"cuechange",()=>dt.updateCues.call(this))}),(a&&this.language!==i||!e.includes(n))&&(dt.setLanguage.call(this,i),dt.toggle.call(this,t&&a)),this.elements&&se(this.elements.container,this.config.classNames.captions.enabled,!j.empty(e)),j.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&<.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=j.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=dt.getTracks.call(this),t=dt.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void dt.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),se(this.elements.container,s,n),this.captions.toggled=n,lt.updateSetting.call(this,"captions"),be.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout(()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")})},set(e,t=!0){const i=dt.getTracks.call(this);if(-1!==e)if(j.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,lt.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),be.call(this,this.media,"languagechange")}dt.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&dt.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else dt.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!j.string(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=dt.getTracks.call(this),n=dt.findTrack.call(this,[i]);dt.set.call(this,s.indexOf(n),t)},getTracks(e=!1){const t=Array.from((this.media||{}).textTracks||[]);return t.filter(t=>!this.isHTML5||e||this.captions.meta.has(t)).filter(e=>["captions","subtitles"].includes(e.kind))},findTrack(e,t=!1){const i=dt.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort((e,t)=>s(t)-s(e));let a;return e.every(e=>(a=n.find(t=>t.language===e),!a)),a||(t?n[0]:void 0)},getCurrentTrack(){return dt.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!j.track(t)&&ue.textTracks&&this.captions.toggled&&(t=dt.getCurrentTrack.call(this)),j.track(t)?j.empty(t.label)?j.empty(t.language)?Ge.get("enabled",this.config):e.language.toUpperCase():t.label:Ge.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!j.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!j.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=dt.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map(e=>e.getCueAsHTML()).map(Ye)}const i=t.map(e=>e.trim()).join("\n"),s=i!==this.elements.captions.innerHTML;if(s){Z(this.elements.captions);const e=Y("span",te(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),be.call(this,this.media,"cuechange")}}};var ut=dt;const pt={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.8.3/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/oembed.json?url={0}"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",marker:"plyr__progress__marker",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id",hash:"data-plyr-embed-hash"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:"",withCredentials:!1},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:"",artist:"",album:"",artwork:[]},markers:{enabled:!1,points:[]}};var mt=pt;const gt={active:"picture-in-picture",inactive:"inline"};const ft={html5:"html5",youtube:"youtube",vimeo:"vimeo"},yt={audio:"audio",video:"video"};function bt(e){return/^(?:https?:\/\/)?(?:www\.)?(?:youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?ft.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?ft.vimeo:null}function vt(){}class wt{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):vt}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):vt}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):vt}}class kt{constructor(e){(0,v.A)(this,"onChange",()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;j.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;be.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)}),(0,v.A)(this,"toggleFallback",(e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",se(this.target,this.player.config.classNames.fullscreen.fallback,e),Ve.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=j.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter(e=>e.trim()!==i).join(","))}this.onChange()}),(0,v.A)(this,"trapFocus",e=>{if(Ve.isIos||Ve.isIPadOS||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=oe.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())}),(0,v.A)(this,"update",()=>{if(this.supported){let e;e=this.forceFallback?"Fallback (forced)":kt.nativeSupported?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");se(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)}),(0,v.A)(this,"enter",()=>{this.supported&&(Ve.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!kt.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?j.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))}),(0,v.A)(this,"exit",()=>{if(this.supported)if(Ve.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ke(this.player.play());else if(!kt.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!j.empty(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}),(0,v.A)(this,"toggle",()=>{this.active?this.exit():this.enter()}),this.player=e,this.prefix=kt.prefix,this.property=kt.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===e.config.fullscreen.fallback,this.player.elements.fullscreen=e.config.fullscreen.container&&re(this.player.elements.container,e.config.fullscreen.container),ge.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,()=>{this.onChange()}),ge.call(this.player,this.player.elements.container,"dblclick",e=>{j.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")}),ge.call(this,this.player.elements.container,"keydown",e=>this.trapFocus(e)),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return kt.nativeSupported&&!this.forceFallback}static get prefix(){if(j.function(document.exitFullscreen))return"";let e="";const t=["webkit","moz","ms"];return t.some(t=>!(!j.function(document[`${t}ExitFullscreen`])&&!j.function(document[`${t}CancelFullScreen`]))&&(e=t,!0)),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,kt.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||kt.nativeSupported||!Ve.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!kt.nativeSupported||this.forceFallback)return ne(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return Ve.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}var Tt=kt;function Ct(e,t=1){return new Promise((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})})}const At={addStyleHook(){se(this.elements.container,this.config.selectors.container.replace(".",""),!0),se(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void At.toggleNativeControls.call(this,!0);j.element(this.elements.controls)||(lt.inject.call(this),this.listeners.controls()),At.toggleNativeControls.call(this),this.isHTML5&&ut.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,lt.updateVolume.call(this),lt.timeUpdate.call(this),lt.durationUpdate.call(this),At.checkPlaying.call(this),se(this.elements.container,this.config.classNames.pip.supported,ue.pip&&this.isHTML5&&this.isVideo),se(this.elements.container,this.config.classNames.airplay.supported,ue.airplay&&this.isHTML5),se(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(()=>{be.call(this,this.media,"ready")},0),At.setTitle.call(this),this.poster&&At.setPoster.call(this,this.poster,!1).catch(()=>{}),this.config.duration&<.durationUpdate.call(this),this.config.mediaMetadata&<.setMediaMetadata.call(this)},setTitle(){let e=Ge.get("play",this.config);if(j.string(this.config.title)&&!j.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach(t=>{t.setAttribute("aria-label",e)}),this.isEmbed){const e=le.call(this,"iframe");if(!j.element(e))return;const t=j.empty(this.config.title)?"video":this.config.title,i=Ge.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){se(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),we.call(this).then(()=>Ct(e)).catch(t=>{throw e===this.poster&&At.togglePoster.call(this,!1),t}).then(()=>{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),At.togglePoster.call(this,!0),e)))},checkPlaying(e){se(this.elements.container,this.config.classNames.playing,this.playing),se(this.elements.container,this.config.classNames.paused,this.paused),se(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",Ge.get(this.playing?"pause":"play",this.config))}),j.event(e)&&"timeupdate"===e.type||At.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(()=>{se(this.elements.container,this.config.classNames.loading,this.loading),At.toggleControls.call(this)},this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter(e=>!j.empty(e)&&j.string(e)&&e.startsWith("--plyr")).forEach(e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)}),j.empty(this.media.style)&&this.media.removeAttribute("style")}};var St=At;class xt{constructor(e){(0,v.A)(this,"firstTouch",()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,se(t.container,e.config.classNames.isTouch,!0)}),(0,v.A)(this,"global",(e=!0)=>{const{player:t}=this;t.config.keyboard.global&&me.call(t,window,"keydown keyup",this.handleKey,e,!1),me.call(t,document.body,"click",this.toggleMenu,e),ye.call(t,document.body,"touchstart",this.firstTouch)}),(0,v.A)(this,"container",()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&ge.call(e,i.container,"keydown keyup",this.handleKey,!1),ge.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);const a=["touchstart","touchmove","mousemove"].includes(t.type);let r=0;a&&(St.toggleControls.call(e,!0),r=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),r)});const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=Me.call(e),r=Ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(r?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,l]=Ie(),c=o/l>n/a;r?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?l/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};ge.call(e,i.container,"enterfullscreen exitfullscreen",t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&j.empty(e.config.ratio))return;n();const r="enterfullscreen"===t.type?ge:fe;r.call(e,window,"resize",a)})}),(0,v.A)(this,"media",()=>{const{player:e}=this,{elements:t}=e;if(ge.call(e,e.media,"timeupdate seeking seeked",t=>lt.timeUpdate.call(e,t)),ge.call(e,e.media,"durationchange loadeddata loadedmetadata",t=>lt.durationUpdate.call(e,t)),ge.call(e,e.media,"ended",()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())}),ge.call(e,e.media,"progress playing seeking seeked",t=>lt.updateProgress.call(e,t)),ge.call(e,e.media,"volumechange",t=>lt.updateVolume.call(e,t)),ge.call(e,e.media,"playing play pause ended emptied timeupdate",t=>St.checkPlaying.call(e,t)),ge.call(e,e.media,"waiting canplay seeked playing",t=>St.checkLoading.call(e,t)),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=le.call(e,`.${e.config.classNames.video}`);if(!j.element(i))return;ge.call(e,t.container,"click",s=>{const n=[t.container,i];(n.includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,()=>{ke(e.play())},"play")):this.proxy(s,()=>{ke(e.togglePlay())},"play")))})}e.supported.ui&&e.config.disableContextMenu&&ge.call(e,t.wrapper,"contextmenu",e=>{e.preventDefault()},!1),ge.call(e,e.media,"volumechange",()=>{e.storage.set({volume:e.volume,muted:e.muted})}),ge.call(e,e.media,"ratechange",()=>{lt.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})}),ge.call(e,e.media,"qualitychange",t=>{lt.updateSetting.call(e,"quality",null,t.detail.quality)}),ge.call(e,e.media,"ready qualitychange",()=>{lt.setDownloadUrl.call(e)});const i=e.config.events.concat(["keyup","keydown"]).join(" ");ge.call(e,e.media,i,i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),be.call(e,t.container,i.type,!0,s)})}),(0,v.A)(this,"proxy",(e,t,i)=>{const{player:s}=this,n=s.config.listeners[i],a=j.function(n);let r=!0;a&&(r=n.call(s,e)),!1!==r&&j.function(t)&&t.call(s,e)}),(0,v.A)(this,"bind",(e,t,i,s,n=!0)=>{const{player:a}=this,r=a.config.listeners[s],o=j.function(r);ge.call(a,e,t,e=>this.proxy(e,i,s),n&&!o)}),(0,v.A)(this,"controls",()=>{const{player:e}=this,{elements:t}=e,i=Ve.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach(t=>{this.bind(t,"click",()=>{ke(e.togglePlay())},"play")}),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",()=>{e.lastSeekTime=Date.now(),e.rewind()},"rewind"),this.bind(t.buttons.fastForward,"click",()=>{e.lastSeekTime=Date.now(),e.forward()},"fastForward"),this.bind(t.buttons.mute,"click",()=>{e.muted=!e.muted},"mute"),this.bind(t.buttons.captions,"click",()=>e.toggleCaptions()),this.bind(t.buttons.download,"click",()=>{be.call(e,e.media,"download")},"download"),this.bind(t.buttons.fullscreen,"click",()=>{e.fullscreen.toggle()},"fullscreen"),this.bind(t.buttons.pip,"click",()=>{e.pip="toggle"},"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",t=>{t.stopPropagation(),t.preventDefault(),lt.toggleMenu.call(e,t)},null,!1),this.bind(t.buttons.settings,"keyup",t=>{[" ","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),lt.toggleMenu.call(e,t)):lt.focusFirstMenuItem.call(e,null,!0))},null,!1),this.bind(t.settings.menu,"keydown",t=>{"Escape"===t.key&<.toggleMenu.call(e,t)}),this.bind(t.inputs.seek,"mousedown mousemove",e=>{const i=t.progress.getBoundingClientRect(),s=e.pageX-e.clientX,n=100/i.width*(e.pageX-i.left-s);e.currentTarget.setAttribute("seek-value",n)}),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",t=>{const i=t.currentTarget,s="play-on-seeked";if(j.keyboardEvent(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ke(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())}),Ve.isIos){const t=oe.call(e,'input[type="range"]');Array.from(t).forEach(e=>this.bind(e,i,e=>B(e.target)))}this.bind(t.inputs.seek,i,t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");j.empty(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration},"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",t=>lt.updateSeekTooltip.call(e,t)),this.bind(t.progress,"mousemove touchmove",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)}),this.bind(t.progress,"mouseleave touchend click",()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)}),this.bind(t.progress,"mousedown touchstart",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)}),this.bind(t.progress,"mouseup touchend",t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)}),Ve.isWebKit&&Array.from(oe.call(e,'input[type="range"]')).forEach(t=>{this.bind(t,"input",t=>lt.updateRangeFill.call(e,t.target))}),e.config.toggleInvert&&!j.element(t.display.duration)&&this.bind(t.display.currentTime,"click",()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,lt.timeUpdate.call(e))}),this.bind(t.inputs.volume,i,t=>{e.volume=t.target.value},"volume"),this.bind(t.controls,"mouseenter mouseleave",i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type}),t.fullscreen&&Array.from(t.fullscreen.children).filter(e=>!e.contains(t.container)).forEach(i=>{this.bind(i,"mouseenter mouseleave",i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)})}),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(t.controls,"focusin",()=>{const{config:i,timers:s}=e;se(t.controls,i.classNames.noTransition,!0),St.toggleControls.call(e,!0),setTimeout(()=>{se(t.controls,i.classNames.noTransition,!1)},0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout(()=>St.toggleControls.call(e,!1),n)}),this.bind(t.inputs.volume,"wheel",t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map(e=>i?-e:e),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:r}=e.media;(1===a&&r<1||-1===a&&r>0)&&t.preventDefault()},"volume",!1)}),this.player=e,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:r,metaKey:o,shiftKey:l}=e,c="keydown"===n,h=c&&s===this.lastKey;if(a||r||o||l)return;if(!s)return;const d=e=>{t.currentTime=t.duration/10*e};if(c){const n=document.activeElement;if(j.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&ae(n,s))return;if(" "===e.key&&ae(n,'button, [role^="menuitem"]'))return}const a=[" ","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"];switch(a.includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":h||d(Number.parseInt(s,10));break;case" ":case"k":h||ke(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":h||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":h||t.toggleCaptions();break;case"l":t.loop=!t.loop;break;default:break}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null}toggleMenu(e){lt.toggleMenu.call(this.player,e)}}var Et=xt,Mt=i(1583);function Lt(e){return new Promise((t,i)=>{Mt(e,{success:t,error:i})})}function Pt(e){if(j.empty(e))return null;if(j.number(Number(e)))return e;const t=/^.*(vimeo.com\/|video\/)(\d+).*/,i=e.match(t);return i?i[2]:e}function It(e){const t=/^.*(vimeo.com\/|video\/)(\d+)(\?.*h=|\/)+([\d,a-f]+)/,i=e.match(t);return i&&5===i.length?i[4]:null}function $t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}const Nt={setup(){const e=this;se(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,Le.call(e),j.object(window.Vimeo)?Nt.ready.call(e):Lt(e.config.urls.vimeo.sdk).then(()=>{Nt.ready.call(e)}).catch(t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)})},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),r="";j.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),r=e.media.getAttribute(e.config.attributes.embed.hash)):r=It(a);const o=r?{h:r}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const l=ht({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:e.config.playsinline,...o,...n}),c=Pt(a),h=Y("iframe"),d=qe(e.config.urls.vimeo.iframe,c,l);if(h.setAttribute("src",d),h.setAttribute("allowfullscreen",""),h.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),j.empty(s)||h.setAttribute("referrerPolicy",s),i||!t.customControls)h.setAttribute("data-poster",e.poster),e.media=ee(h,e.media);else{const t=Y("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(h),e.media=ee(t,e.media)}t.customControls||tt(qe(e.config.urls.vimeo.api,d)).then(t=>{!j.empty(t)&&t.thumbnail_url&&St.setPoster.call(e,t.thumbnail_url).catch(()=>{})}),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>($t.call(e,!0),e.embed.play()),e.media.pause=()=>($t.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:u}=e.media;Object.defineProperty(e.media,"currentTime",{get(){return u},set(t){const{embed:i,media:s,paused:n,volume:a}=e,r=n&&!i.hasPlayed;s.seeking=!0,be.call(e,s,"seeking"),Promise.resolve(r&&i.setVolume(0)).then(()=>i.setCurrentTime(t)).then(()=>r&&i.pause()).then(()=>r&&i.setVolume(a)).catch(()=>{})}});let p=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get(){return p},set(t){e.embed.setPlaybackRate(t).then(()=>{p=t,be.call(e,e.media,"ratechange")}).catch(()=>{e.options.speed=[1]})}});let{volume:m}=e.config;Object.defineProperty(e.media,"volume",{get(){return m},set(t){e.embed.setVolume(t).then(()=>{m=t,be.call(e,e.media,"volumechange")})}});let{muted:g}=e.config;Object.defineProperty(e.media,"muted",{get(){return g},set(t){const i=!!j.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then(()=>{g=i,be.call(e,e.media,"volumechange")})}});let f,{loop:y}=e.config;Object.defineProperty(e.media,"loop",{get(){return y},set(t){const i=j.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then(()=>{y=i})}}),e.embed.getVideoUrl().then(t=>{f=t,lt.setDownloadUrl.call(e)}).catch(e=>{this.debug.warn(e)}),Object.defineProperty(e.media,"currentSrc",{get(){return f}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then(t=>{const[i,s]=t;e.embed.ratio=Pe(i,s),Le.call(this)}),e.embed.setAutopause(e.config.autopause).then(t=>{e.config.autopause=t}),e.embed.getVideoTitle().then(t=>{e.config.title=t,St.setTitle.call(this)}),e.embed.getCurrentTime().then(t=>{u=t,be.call(e,e.media,"timeupdate")}),e.embed.getDuration().then(t=>{e.media.duration=t,be.call(e,e.media,"durationchange")}),e.embed.getTextTracks().then(t=>{e.media.textTracks=t,ut.setup.call(e)}),e.embed.on("cuechange",({cues:t=[]})=>{const i=t.map(e=>Ke(e.text));ut.updateCues.call(e,i)}),e.embed.on("loaded",()=>{if(e.embed.getPaused().then(t=>{$t.call(e,!t),t||be.call(e,e.media,"playing")}),j.element(e.embed.element)&&e.supported.ui){const t=e.embed.element;t.setAttribute("tabindex",-1)}}),e.embed.on("bufferstart",()=>{be.call(e,e.media,"waiting")}),e.embed.on("bufferend",()=>{be.call(e,e.media,"playing")}),e.embed.on("play",()=>{$t.call(e,!0),be.call(e,e.media,"playing")}),e.embed.on("pause",()=>{$t.call(e,!1)}),e.embed.on("timeupdate",t=>{e.media.seeking=!1,u=t.seconds,be.call(e,e.media,"timeupdate")}),e.embed.on("progress",t=>{e.media.buffered=t.percent,be.call(e,e.media,"progress"),1===Number.parseInt(t.percent,10)&&be.call(e,e.media,"canplaythrough"),e.embed.getDuration().then(t=>{t!==e.media.duration&&(e.media.duration=t,be.call(e,e.media,"durationchange"))})}),e.embed.on("seeked",()=>{e.media.seeking=!1,be.call(e,e.media,"seeked")}),e.embed.on("ended",()=>{e.media.paused=!0,be.call(e,e.media,"ended")}),e.embed.on("error",t=>{e.media.error=t,be.call(e,e.media,"error")}),t.customControls&&setTimeout(()=>St.build.call(e),0)}};var Dt=Nt;function Ft(e){if(j.empty(e))return null;const t=/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/,i=e.match(t);return i&&i[2]?i[2]:e}function _t(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,be.call(this,this.media,e?"play":"pause"))}function Rt(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const Ot={setup(){if(se(this.elements.wrapper,this.config.classNames.embed,!0),j.object(window.YT)&&j.function(window.YT.Player))Ot.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{j.function(e)&&e(),Ot.ready.call(this)},Lt(this.config.urls.youtube.sdk).catch(e=>{this.debug.warn("YouTube API failed to load",e)})}},getTitle(e){const t=qe(this.config.urls.youtube.api,e);tt(t).then(e=>{if(j.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,St.setTitle.call(this),this.embed.ratio=Pe(s,i)}Le.call(this)}).catch(()=>{Le.call(this)})},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!j.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");j.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=Ft(s),a=je(e.provider),r=Y("div",{id:a,"data-poster":t.customControls?e.poster:void 0});if(e.media=ee(r,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Ct(t("maxres"),121).catch(()=>Ct(t("sd"),121)).catch(()=>Ct(t("hq"))).then(t=>St.setPoster.call(e,t.src)).then(t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")}).catch(()=>{})}e.embed=new window.YT.Player(e.media,{videoId:n,host:Rt(t),playerVars:z({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[i]||"An unknown error occurred";e.media.error={code:i,message:s},be.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),be.call(e,e.media,"ratechange")},onReady(i){if(j.function(e.media.play))return;const s=i.target;Ot.getTitle.call(e,n),e.media.play=()=>{_t.call(e,!0),s.playVideo()},e.media.pause=()=>{_t.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get(){return Number(s.getCurrentTime())},set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,be.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get(){return s.getPlaybackRate()},set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get(){return a},set(t){a=t,s.setVolume(100*a),be.call(e,e.media,"volumechange")}});let{muted:r}=e.config;Object.defineProperty(e.media,"muted",{get(){return r},set(t){const i=j.boolean(t)?t:r;r=i,s[i?"mute":"unMute"](),s.setVolume(100*a),be.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get(){return s.getVideoUrl()}}),Object.defineProperty(e.media,"ended",{get(){return e.currentTime===e.duration}});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter(t=>e.config.speed.options.includes(t)),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),be.call(e,e.media,"timeupdate"),be.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval(()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBufferedSt.build.call(e),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);const n=e.media.seeking&&[1,2].includes(i.data);switch(n&&(e.media.seeking=!1,be.call(e,e.media,"seeked")),i.data){case-1:be.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),be.call(e,e.media,"progress");break;case 0:_t.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):be.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(_t.call(e,!0),be.call(e,e.media,"playing"),e.timers.playing=setInterval(()=>{be.call(e,e.media,"timeupdate")},50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),be.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),_t.call(e,!1);break;case 3:be.call(e,e.media,"waiting");break;default:break}be.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}};var Ht=Ot;const Vt={setup(){this.media?(se(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),se(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&se(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Y("div",{class:this.config.classNames.video}),W(this.media,this.elements.wrapper),this.elements.poster=Y("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?Ne.setup.call(this):this.isYouTube?Ht.setup.call(this):this.isVimeo&&Dt.setup.call(this)):this.debug.warn("No media element found!")}};var jt=Vt;function qt(e){e.manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()}class Bt{constructor(e){(0,v.A)(this,"load",()=>{this.enabled&&(j.object(window.google)&&j.object(window.google.ima)?this.ready():Lt(this.player.config.urls.googleIMA.sdk).then(()=>{this.ready()}).catch(()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))}))}),(0,v.A)(this,"ready",()=>{this.enabled||qt(this),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then(()=>{this.clearSafetyTimer("onAdsManagerLoaded()")}),this.listeners(),this.setupIMA()}),(0,v.A)(this,"setupIMA",()=>{this.elements.container=Y("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,e=>this.onAdsManagerLoaded(e),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e),!1),this.requestAds()}),(0,v.A)(this,"requestAds",()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(t){this.onAdError(t)}}),(0,v.A)(this,"pollCountdown",(e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");const t=()=>{const e=rt(Math.max(this.manager.getRemainingTime(),0)),t=`${Ge.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)};this.countdownTimer=setInterval(t,100)}),(0,v.A)(this,"onAdsManagerLoaded",e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,e=>this.onAdError(e)),Object.keys(google.ima.AdEvent.Type).forEach(e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],e=>this.onAdEvent(e))}),this.trigger("loaded")}),(0,v.A)(this,"addCuePoints",()=>{j.empty(this.cuePoints)||this.cuePoints.forEach(e=>{if(0!==e&&-1!==e&&e{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData(),n=e=>{be.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)};switch(n(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`);break;default:break}}),(0,v.A)(this,"onAdError",e=>{this.cancel(),this.player.debug.warn("Ads error",e)}),(0,v.A)(this,"listeners",()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",()=>{this.addCuePoints()}),this.player.on("ended",()=>{this.loader.contentComplete()}),this.player.on("timeupdate",()=>{t=this.player.currentTime}),this.player.on("seeked",()=>{const e=this.player.currentTime;j.empty(this.cuePoints)||this.cuePoints.forEach((i,s)=>{t{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)})}),(0,v.A)(this,"play",()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then(()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(t){this.onAdError(t)}}).catch(()=>{})}),(0,v.A)(this,"resumeContent",()=>{this.elements.container.style.zIndex="",this.playing=!1,ke(this.player.media.play())}),(0,v.A)(this,"pauseContent",()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()}),(0,v.A)(this,"cancel",()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()}),(0,v.A)(this,"loadAds",()=>{this.managerPromise.then(()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise(e=>{this.on("loaded",e),this.player.debug.log(this.manager)}),this.initialized=!1,this.requestAds()}).catch(()=>{})}),(0,v.A)(this,"trigger",(e,...t)=>{const i=this.events[e];j.array(i)&&i.forEach(e=>{j.function(e)&&e.apply(this,t)})}),(0,v.A)(this,"on",(e,t)=>(j.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this)),(0,v.A)(this,"startSafetyTimer",(e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout(()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")},e)}),(0,v.A)(this,"clearSafetyTimer",e=>{j.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)}),this.player=e,this.config=e.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise((e,t)=>{this.on("loaded",e),this.on("error",t)}),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!j.empty(e.publisherId)||j.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(j.url(e.tagUrl))return e.tagUrl;const t={AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId},i="https://go.aniview.com/api/adserver6/vast/";return`${i}?${ht(t)}`}}var Ut=Bt;function Xt(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}function zt(e){const t=[],i=e.split(/\r\n\r\n|\n\n|\r\r/);return i.forEach(e=>{const i={},s=e.split(/\r\n|\n|\r/);s.forEach(e=>{if(j.number(i.startTime)){if(!j.empty(e.trim())&&j.empty(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})( ?--> ?)(\d{2})?:?(\d{2}):(\d{2}).(\d{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}}),i.text&&t.push(i)}),t}function Wt(e,t){const i=t.width/t.height,s={};return e>i?(s.width=t.width,s.height=1/e*t.width):(s.height=t.height,s.width=e*t.height),s}class Kt{constructor(e){(0,v.A)(this,"load",()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then(()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)})}),(0,v.A)(this,"getThumbnails",()=>new Promise(e=>{const{src:t}=this.player.config.previewThumbnails;if(j.empty(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort((e,t)=>e.height-t.height),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(j.function(t))t(e=>{this.thumbnails=e,i()});else{const e=j.string(t)?[t]:t,s=e.map(e=>this.getThumbnail(e));Promise.all(s).then(i)}})),(0,v.A)(this,"getThumbnail",e=>new Promise(t=>{tt(e,void 0,this.player.config.previewThumbnails.withCredentials).then(i=>{const s={frames:zt(i),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text})})),(0,v.A)(this,"startMove",e=>{if(this.loaded&&j.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{const t=this.player.elements.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(i/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.textContent=rt(this.seekTime);const s=this.player.config.markers?.points?.find(({time:e})=>e===Math.round(this.seekTime));s&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${s.label}
`)}this.showImageAtCurrentTime()}}),(0,v.A)(this,"endMove",()=>{this.toggleThumbContainer(!1,!0)}),(0,v.A)(this,"startScrubbing",e=>{(j.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}),(0,v.A)(this,"endScrubbing",()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ye.call(this.player,this.player.media,"timeupdate",()=>{this.mouseDown||this.toggleScrubbingContainer(!1)})}),(0,v.A)(this,"listeners",()=>{this.player.on("play",()=>{this.toggleThumbContainer(!1,!0)}),this.player.on("seeked",()=>{this.toggleThumbContainer(!1)}),this.player.on("timeupdate",()=>{this.lastTime=this.player.media.currentTime})}),(0,v.A)(this,"render",()=>{this.elements.thumb.container=Y("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Y("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=Y("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Y("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),j.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Y("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}),(0,v.A)(this,"destroy",()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()}),(0,v.A)(this,"showImageAtCurrentTime",()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex(e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)}),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))}),(0,v.A)(this,"loadImage",(e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,r=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=r,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${r}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}}),(0,v.A)(this,"showImage",(e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))}),(0,v.A)(this,"removeOldImages",e=>{Array.from(this.currentImageContainer.children).forEach(t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout(()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)},i)}})}),(0,v.A)(this,"preloadNearby",(e,t=!0)=>new Promise(i=>{setTimeout(()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach(e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}}),a||i()}},300)})),(0,v.A)(this,"getHigherQuality",(e,t,i,s)=>{if(e{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))},300)}}),(0,v.A)(this,"toggleThumbContainer",(e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"toggleScrubbingContainer",(e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}),(0,v.A)(this,"determineContainerAutoSizing",()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)}),(0,v.A)(this,"setThumbContainerSizeAndPos",()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()}),(0,v.A)(this,"setThumbContainerPos",()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,r=Xt(a,s,n);i.style.left=`${r}px`,i.style.setProperty("--preview-arrow-offset",a-r+"px")}),(0,v.A)(this,"setScrubbingContainerSize",()=>{const{width:e,height:t}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`}),(0,v.A)(this,"setImageSizeAndOffset",(e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`}),this.player=e,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=Wt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}var Yt=Kt;const Qt={insertElements(e,t){j.string(t)?J(e,this.media,{src:t}):j.array(t)&&t.forEach(t=>{J(e,this.media,t)})},change(e){X(e,"sources.length")?(Ne.cancelRequests.call(this),this.destroy(()=>{this.options.quality=[],G(this.media),this.media=null,j.element(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=ft.html5,src:n}]=t,a="html5"===s?i:"div",r="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:ue.check(i,s,this.config.playsinline),media:Y(a,r)}),this.elements.container.appendChild(this.media),j.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),j.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),St.addStyleHook.call(this),this.isHTML5&&Qt.insertElements.call(this,"source",t),this.config.title=e.title,jt.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&Qt.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.isHTML5&&this.media.load(),j.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))),this.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}};var Jt=Qt;class Gt{constructor(e,t){if((0,v.A)(this,"play",()=>j.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(()=>this.ads.play()).catch(()=>ke(this.media.play())),this.media.play()):null),(0,v.A)(this,"pause",()=>this.playing&&j.function(this.media.pause)?this.media.pause():null),(0,v.A)(this,"togglePlay",e=>{const t=j.boolean(e)?e:!this.playing;return t?this.play():this.pause()}),(0,v.A)(this,"stop",()=>{this.isHTML5?(this.pause(),this.restart()):j.function(this.media.stop)&&this.media.stop()}),(0,v.A)(this,"restart",()=>{this.currentTime=0}),(0,v.A)(this,"rewind",e=>{this.currentTime-=j.number(e)?e:this.config.seekTime}),(0,v.A)(this,"forward",e=>{this.currentTime+=j.number(e)?e:this.config.seekTime}),(0,v.A)(this,"increaseVolume",e=>{const t=this.media.muted?0:this.volume;this.volume=t+(j.number(e)?e:0)}),(0,v.A)(this,"decreaseVolume",e=>{this.increaseVolume(-e)}),(0,v.A)(this,"airplay",()=>{ue.airplay&&this.media.webkitShowPlaybackTargetPicker()}),(0,v.A)(this,"toggleControls",e=>{if(this.supported.ui&&!this.isAudio){const t=ne(this.elements.container,this.config.classNames.hideControls),i="undefined"===typeof e?void 0:!e,s=se(this.elements.container,this.config.classNames.hideControls,i);if(s&&j.array(this.config.controls)&&this.config.controls.includes("settings")&&!j.empty(this.config.settings)&<.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";be.call(this,this.media,e)}return!s}return!1}),(0,v.A)(this,"on",(e,t)=>{ge.call(this,this.elements.container,e,t)}),(0,v.A)(this,"once",(e,t)=>{ye.call(this,this.elements.container,e,t)}),(0,v.A)(this,"off",(e,t)=>{fe(this.elements.container,e,t)}),(0,v.A)(this,"destroy",(e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(G(this.elements.buttons.play),G(this.elements.captions),G(this.elements.controls),G(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),j.function(e)&&e()):(ve.call(this),Ne.cancelRequests.call(this),ee(this.elements.original,this.elements.container),be.call(this,this.elements.original,"destroyed",!0),j.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout(()=>{this.elements=null,this.media=null},200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(St.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&j.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}),(0,v.A)(this,"supports",e=>ue.mime.call(this,e)),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=ue.touch,this.media=e,j.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||j.nodeList(this.media)||j.array(this.media))&&(this.media=this.media[0]),this.config=z({},mt,Gt.defaults,t||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch{return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new wt(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",ue),j.nullOrUndefined(this.media)||!j.element(this.media))return void this.debug.error("Setup failed: no suitable element passed");if(this.media.plyr)return void this.debug.warn("Target already setup");if(!this.config.enabled)return void this.debug.error("Setup failed: disabled by config");if(!ue.check().api)return void this.debug.error("Setup failed: no support");const i=this.media.cloneNode(!0);i.autoplay=!1,this.elements.original=i;const s=this.media.tagName.toLowerCase();let n=null,a=null;switch(s){case"div":if(n=this.media.querySelector("iframe"),j.element(n)){if(a=ct(n.getAttribute("src")),this.provider=bt(a.toString()),this.elements.container=this.media,this.media=n,this.elements.container.className="",a.search.length){const e=["1","true"];e.includes(a.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(a.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(a.searchParams.get("playsinline")),this.config.youtube.hl=a.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(j.empty(this.provider)||!Object.values(ft).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=yt.video;break;case"video":case"audio":this.type=s,this.provider=ft.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=ue.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Et(this),this.storage=new et(this),this.media.plyr=this,j.element(this.elements.container)||(this.elements.container=Y("div"),W(this.media,this.elements.container)),St.migrateStyles.call(this),St.addStyleHook.call(this),jt.setup.call(this),this.config.debug&&ge.call(this,this.elements.container,this.config.events.join(" "),e=>{this.debug.log(`event: ${e.type}`)}),this.fullscreen=new Tt(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&St.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Ut(this)),this.isHTML5&&this.config.autoplay&&this.once("canplay",()=>ke(this.play())),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===ft.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===ft.youtube}get isVimeo(){return this.provider===ft.vimeo}get isVideo(){return this.type===yt.video}get isAudio(){return this.type===yt.audio}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=j.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return j.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=Number.parseFloat(this.config.duration),t=(this.media||{}).duration,i=j.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;const i=1,s=0;j.string(t)&&(t=Number(t)),j.number(t)||(t=this.storage.get("volume")),j.number(t)||({volume:t}=this.config),t>i&&(t=i),t0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;j.boolean(t)||(t=this.storage.get("muted")),j.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;j.number(e)&&(t=e),j.number(t)||(t=this.storage.get("speed")),j.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Xt(t,i,s),this.config.speed.selected=t,setTimeout(()=>{this.media&&(this.media.playbackRate=t)},0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!j.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(j.number),n=!0;if(!i.includes(s)){const e=Ce(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=j.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){Jt.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return j.url(e)?e:this.source}set download(e){j.url(e)&&(this.config.urls.download=e,lt.setDownloadUrl.call(this))}set poster(e){this.isVideo?St.setPoster.call(this,e,!1).catch(()=>{}):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=Ee(Me.call(this));return j.array(e)?e.join(":"):e}set ratio(e){this.isVideo?j.string(e)&&xe(e)?(this.config.ratio=Ee(e),Le.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=j.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){ut.toggle.call(this,e,!1)}set currentTrack(e){ut.set.call(this,e,!1),ut.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){ut.setLanguage.call(this,e,!1)}get language(){return(ut.getCurrentTrack.call(this)||{}).language}set pip(e){if(!ue.pip)return;const t=j.boolean(e)?e:!this.pip;j.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?gt.active:gt.inactive),j.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return ue.pip?j.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===gt.active:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Yt(this))}static supported(e,t){return ue.check(e,t)}static loadSprite(e,t){return it(e,t)}static setup(e,t={}){let i=null;return j.string(e)?i=Array.from(document.querySelectorAll(e)):j.nodeList(e)?i=Array.from(e):j.array(e)&&(i=e.filter(j.element)),j.empty(i)?null:i.map(e=>new Gt(e,t))}}Gt.defaults=U(mt);var Zt=Gt;i(7642),i(8004),i(3853),i(5876),i(2475),i(5024),i(1698);const ei=new Set;let ti=null,ii="stop";function si(e){return e&&("AUDIO"===e.tagName||"VIDEO"===e.tagName)}function ni(e){if(si(e)){try{e.pause()}catch(t){}try{e.currentTime=0}catch(t){}try{e.removeAttribute("src")}catch(t){}try{e.load?.()}catch(t){}}}function ai(e=null){for(const t of ei)e&&t===e||ni(t);ti=e||null}let ri=!1;function oi(){ri||(ri=!0,document.addEventListener("visibilitychange",()=>{document.hidden&&ai(null)}),window.addEventListener("pagehide",()=>ai(null)))}function li(){return ii}function ci(e){["stop","sequence","loop"].includes(e)&&(ii=e)}var hi={name:"TransformMedia",props:{file:{type:Object,required:!0},src:{type:String,required:!0},isImage:{type:Boolean,default:!0},isVideo:{type:Boolean,default:!1},isAudio:{type:Boolean,default:!1},isActive:{type:Boolean,default:!1}},data(){return{pointers:new Map,scale:1,rotation:0,rotatePreview:0,tx:0,ty:0,naturalWidth:0,naturalHeight:0,startScale:1,startRotation:0,startTx:0,startTy:0,startCenter:null,startDist:0,startAngle:0,dragging:!1,dragStart:null,viewportRect:null,minScale:1,maxScale:4,gestureMode:null,edgeOverflow:0,edgeDir:0,player:null,audioCover:null,audioTitle:"",audioArtist:"",menuAdded:!1}},computed:{isActiveTransform(){return this.scale>1.001||this.pointers.size>=2||this.dragging},displayRotation(){return this.rotation+this.rotatePreview},rotateShrink(){const e=Math.min(1,Math.abs(this.rotatePreview)/90),t=Math.sin(Math.PI*e);return 1-.12*t},mediaStyle(){const e=this.scale*this.rotateShrink,t=this.pointers.size>0;return{transform:`translate3d(${this.tx}px, ${this.ty}px, 0) scale(${e}) rotate(${this.displayRotation}deg)`,transition:t?"none":"transform 0.25s ease",transformOrigin:"center center"}}},watch:{isActiveTransform(e){this.$emit(e?"lock":"unlock")},isActive(e){e?this.$nextTick(()=>this.initPlayer()):this.destroyPlayer()}},mounted(){this.isAudio&&this.initAudioInfo(),this.isActive&&this.$nextTick(()=>this.initPlayer())},beforeUnmount(){this.destroyPlayer(),this.audioCover&&(URL.revokeObjectURL(this.audioCover),this.audioCover=null)},methods:{initPlayer(){if(this.player)return;const e=this.$refs.videoEl||this.$refs.audioEl;if(!e)return;this.retryCount=0,this.maxRetries=3;const t=this.isAudio?["play","progress","current-time","mute","volume"]:["play","progress","current-time","mute","volume","fullscreen"];this.player=new Zt(e,{controls:t,autoplay:this.isVideo,resetOnEnd:!0}),e.addEventListener("error",()=>{this.retryCount{if(e&&this.src&&this.player){const t=this.src.split("?_retry=")[0],i=t+(t.includes("?")?"&":"?")+"_retry="+Date.now();e.src=i,e.load()}},500*this.retryCount))}),this.player.on("ready",()=>{this.tryAddCustomMenu()}),this.scheduleMenuRetry(),this.isAudio&&this.player.on("ended",this.onAudioEnded)},scheduleMenuRetry(){const e=t=>{t>=5||this.menuAdded||setTimeout(()=>{this.menuAdded||(this.tryAddCustomMenu(),e(t+1))},200*(t+1))};e(0)},tryAddCustomMenu(){if(this.menuAdded)return;if(!this.player?.elements?.controls)return;const e=this.player.elements.controls;e&&!e.querySelector(".plyr-custom-menu")&&(this.addCustomMenu(e),this.menuAdded=!0)},addCustomMenu(e){const t=li(),i=this.isAudio?`\n
\n \n \n \n 播放模式\n \n \n \n
\n
\n
播完停止
\n
顺序播放
\n
单曲循环
\n
\n `:"",s=document.createElement("div");s.className="plyr-custom-menu",s.innerHTML=`\n \n
\n
\n \n \n \n 下载\n
\n
\n \n \n \n \n 播放速度\n \n \n \n
\n
\n
0.5x
\n
0.75x
\n
正常
\n
1.25x
\n
1.5x
\n
2x
\n
\n ${i}\n
\n `,e.appendChild(s),this.bindMenuEvents(s)},bindMenuEvents(e){const t=e.querySelector(".plyr-menu-btn"),i=e.querySelector(".plyr-menu-dropdown"),s=e.querySelector(".plyr-menu-speed"),n=e.querySelector(".plyr-speed-submenu"),a=e.querySelector('[data-action="download"]'),r=e.querySelector(".plyr-menu-playmode"),o=e.querySelector(".plyr-playmode-submenu");t.addEventListener("click",e=>{e.stopPropagation(),i.classList.toggle("show"),n.classList.remove("show"),o&&o.classList.remove("show")}),a.addEventListener("click",()=>{this.downloadMedia(),i.classList.remove("show")}),s.addEventListener("click",e=>{e.stopPropagation(),n.classList.toggle("show"),o&&o.classList.remove("show")}),e.querySelectorAll(".plyr-speed-option").forEach(t=>{t.addEventListener("click",()=>{const s=parseFloat(t.dataset.speed);this.player?.media&&(this.player.media.playbackRate=s),e.querySelectorAll(".plyr-speed-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),n.classList.remove("show")})}),r&&o&&(r.addEventListener("click",e=>{e.stopPropagation(),o.classList.toggle("show"),n.classList.remove("show")}),e.querySelectorAll(".plyr-playmode-option").forEach(t=>{t.addEventListener("click",()=>{const s=t.dataset.mode;ci(s),e.querySelectorAll(".plyr-playmode-option").forEach(e=>e.classList.remove("active")),t.classList.add("active"),i.classList.remove("show"),o.classList.remove("show")})})),document.addEventListener("click",()=>{i.classList.remove("show"),n.classList.remove("show"),o&&o.classList.remove("show")})},downloadMedia(){const e=document.createElement("a");e.href=this.src,e.download=this.file?.name?.split("/").pop()||"download",e.click()},onAudioEnded(){const e=li();"loop"===e?this.player?.media&&(this.player.media.currentTime=0,this.player.play()):"sequence"===e&&this.$emit("audio-ended","next")},destroyPlayer(){const e=this.$refs.videoEl||this.$refs.audioEl;if(this.player){try{this.player.pause(),this.player.destroy()}catch(t){}this.player=null}if(e)try{e.pause(),e.currentTime=0,e.src="",e.load()}catch(t){}},stopAndCleanMedia(){this.destroyPlayer()},initAudioInfo(){const e=this.file?.name||this.src,t=e.split("/").pop().replace(/\.[^.]+$/,"");this.audioTitle=t,this.audioArtist="",this.audioCover=null,this.isActive&&this.tryReadMetadata()},async tryReadMetadata(){try{const e=await fetch(this.src),t=await e.blob(),i=await t.slice(0,131072).arrayBuffer(),s=new DataView(i);73===s.getUint8(0)&&68===s.getUint8(1)&&51===s.getUint8(2)&&this.parseID3v2(s,i)}catch(e){}},parseID3v2(e,t){const i=(127&e.getUint8(6))<<21|(127&e.getUint8(7))<<14|(127&e.getUint8(8))<<7|127&e.getUint8(9);let s=10;while(st.byteLength)break;const a=new Uint8Array(t,s+10,Math.min(n,t.byteLength-s-10));"TIT2"===i?this.audioTitle=this.decodeText(a)||this.audioTitle:"TPE1"===i?this.audioArtist=this.decodeText(a):"APIC"===i&&this.extractCover(a),s+=10+n}},decodeText(e){if(e.length<2)return"";const t=e[0],i=e.slice(1);try{if(0===t)return new TextDecoder("iso-8859-1").decode(i).replace(/\0/g,"");if(1===t)return new TextDecoder("utf-16").decode(i).replace(/\0/g,"");if(3===t)return new TextDecoder("utf-8").decode(i).replace(/\0/g,"")}catch(s){}return""},extractCover(e){try{let t=1;while(tt?t+this.rubberBand(e-t,i,.55):e<-t?-t-this.rubberBand(-t-e,i,.55):e},calcTwoPointer(){const e=Array.from(this.pointers.entries()).sort((e,t)=>e[0]-t[0]),t=e[0][1],i=e[1][1],s=i.x-t.x,n=i.y-t.y,a=Math.hypot(s,n),r=Math.atan2(n,s)*(180/Math.PI),o={x:(t.x+i.x)/2,y:(t.y+i.y)/2};return{dist:a,angle:r,center:o}},normalizeAngle(e){return e=(e%360+360)%360,e>180?e-360:e},onPointerDown(e){if(this.isImage){if(e.currentTarget.setPointerCapture?.(e.pointerId),this.viewportRect=this.getViewportRect(),this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){const{dist:e,angle:t,center:i}=this.calcTwoPointer();return this.startDist=e,this.startAngle=t,this.startCenter=i,this.startScale=this.scale,this.startRotation=this.rotation,this.startTx=this.tx,this.startTy=this.ty,this.dragging=!1,this.gestureMode=null,void(this.rotatePreview=0)}this.scale>1.001&&(this.dragging=!0,this.dragStart={x:e.clientX,y:e.clientY},this.startTx=this.tx,this.startTy=this.ty)}},onPointerMove(e){if(this.isImage&&this.pointers.has(e.pointerId)){if(this.pointers.set(e.pointerId,{x:e.clientX,y:e.clientY}),2===this.pointers.size){e.preventDefault();const{dist:t,angle:i,center:s}=this.calcTwoPointer(),n=t/(this.startDist||t),a=Math.abs(n-1),r=this.normalizeAngle(i-this.startAngle),o=Math.abs(r);if(!this.gestureMode)if(o>=8)this.gestureMode="rotate";else{if(!(a>=.08))return;this.gestureMode="pinch"}if("rotate"===this.gestureMode)return this.scale=this.startScale,void(this.rotatePreview=this.clamp(r,-90,90));if("pinch"===this.gestureMode&&(this.scale=this.clamp(this.startScale*n,this.minScale,this.maxScale),this.rotatePreview=0),this.startCenter&&this.viewportRect){const e=this.startCenter.x-this.viewportRect.left-this.viewportRect.width/2,t=this.startCenter.y-this.viewportRect.top-this.viewportRect.height/2,i=s.x-this.viewportRect.left-this.viewportRect.width/2,n=s.y-this.viewportRect.top-this.viewportRect.height/2;this.tx=this.startTx+(i-e),this.ty=this.startTy+(n-t)}return}if(this.dragging&&this.scale>1.001){e.preventDefault();const t=e.clientX-this.dragStart.x,i=e.clientY-this.dragStart.y,s=this.startTx+t,n=this.startTy+i,{maxX:a,maxY:r,vw:o,vh:l}=this.getPanBounds();let c=0,h=0;s>a?(c=s-a,h=-1):s<-a&&(c=-a-s,h=1),this.edgeOverflow=c,this.edgeDir=h,this.tx=this.applyBoundWithRubber(s,a,o),this.ty=this.applyBoundWithRubber(n,r,l)}}},onPointerUp(e){if(this.isImage&&(this.pointers.has(e.pointerId)&&this.pointers.delete(e.pointerId),this.pointers.size<2&&"rotate"===this.gestureMode&&(this.finishRotate(),this.gestureMode=null),this.pointers.size<2&&(this.startCenter=null,this.startDist=0,this.startAngle=0,this.gestureMode=null),0===this.pointers.size)){if(this.dragging=!1,this.edgeOverflow>60&&0!==this.edgeDir){const e=this.edgeDir;return this.reset(),void this.$emit("edge-swipe",e)}if(this.edgeOverflow=0,this.edgeDir=0,this.scale<=1.001)this.scale=1,this.tx=0,this.ty=0;else{const{maxX:e,maxY:t}=this.getPanBounds();this.tx=Math.max(-e,Math.min(e,this.tx)),this.ty=Math.max(-t,Math.min(t,this.ty))}}},finishRotate(){const e=this.rotatePreview;let t=0;Math.abs(e)>=30&&(t=e>0?90:-90);const i=((this.rotation+t)%360+360)%360;this.rotation=i,this.rotatePreview=0,this.updateFillScale()},updateFillScale(){const e=this.rotation%360,t=90===e||270===e;t?(this.scale=2,this.tx=0,this.ty=0):(this.scale=1,this.tx=0,this.ty=0)},onDblClick(){this.isImage&&(this.scale>1.001?(this.scale=1,this.tx=0,this.ty=0):this.scale=2)}}},di=i(1241);const ui=(0,di.A)(hi,[["render",b],["__scopeId","data-v-b1094b14"]]);var pi=ui,mi=i(4453);const gi={class:"public-browse"},fi={class:"header"},yi={class:"header-left"},bi={class:"logo",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank",rel:"noopener"},vi={class:"header-center"},wi={class:"breadcrumb"},ki=["onClick"],Ti={class:"header-right"},Ci={class:"file-count"},Ai={key:0,class:"loading-container"},Si={key:1,class:"error-container"},xi={key:2,class:"gallery-container",ref:"galleryContainer"},Ei={key:0,class:"folders-section"},Mi={class:"folders-grid"},Li=["onClick"],Pi={class:"folder-name"},Ii={class:"waterfall",ref:"waterfall"},$i=["onClick"],Ni=["src","alt","onLoad"],Di=["src","onLoadedmetadata"],Fi={key:2,class:"audio-placeholder"},_i={class:"audio-name"},Ri={key:3,class:"file-placeholder"},Oi={class:"file-name"},Hi={class:"overlay"},Vi={class:"overlay-actions"},ji=["onClick"],qi=["onClick"],Bi={key:1,class:"floating-page-indicator"},Ui={ref:"loadTrigger",class:"load-trigger"},Xi={key:0,class:"loading-more"},zi={key:1,class:"no-more"},Wi={key:2,class:"credit-link",href:"https://github.com/axibayuit-a11y",target:"_blank",rel:"noopener"},Ki=["src"],Yi=["src"],Qi=["src"],Ji={key:2,class:"other-file-preview"},Gi={class:"file-name"},Zi={class:"page-indicator"};function es(e,t,i,r,o,l){const c=mi.A,h=pi;return(0,s.uX)(),(0,s.CE)("div",gi,[(0,s.Lk)("header",fi,[(0,s.Lk)("div",yi,[(0,s.Lk)("a",bi,(0,a.v_)(l.siteName),1)]),(0,s.Lk)("div",vi,[(0,s.Lk)("div",wi,[(0,s.Lk)("span",{class:"breadcrumb-item",onClick:t[0]||(t[0]=(...e)=>l.goToRoot&&l.goToRoot(...e))},(0,a.v_)(l.rootDirName),1),((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.pathParts,(e,i)=>((0,s.uX)(),(0,s.CE)(s.FK,{key:i},[t[32]||(t[32]=(0,s.Lk)("span",{class:"breadcrumb-sep"},"/",-1)),(0,s.Lk)("span",{class:"breadcrumb-item",onClick:e=>l.goToPath(i)},(0,a.v_)(e),9,ki)],64))),128))])]),(0,s.Lk)("div",Ti,[(0,s.Lk)("div",{class:(0,a.C4)(["search-box",{expanded:o.searchExpanded}])},[o.searchExpanded?((0,s.uX)(),(0,s.CE)(s.FK,{key:1},[(0,s.bo)((0,s.Lk)("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=e=>o.searchInput=e),onKeyup:t[3]||(t[3]=(0,n.jR)((...e)=>l.handleSearch&&l.handleSearch(...e),["enter"])),placeholder:"搜索文件名 或 #页码",class:"search-input",ref:"searchInputRef"},null,544),[[n.Jo,o.searchInput]]),(0,s.Lk)("span",{class:"search-icon",onClick:t[4]||(t[4]=(...e)=>l.handleSearch&&l.handleSearch(...e))},[...t[34]||(t[34]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"16",height:"16"},[(0,s.Lk)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)])])],64)):((0,s.uX)(),(0,s.CE)("span",{key:0,class:"search-icon",onClick:t[1]||(t[1]=(...e)=>l.toggleSearch&&l.toggleSearch(...e))},[...t[33]||(t[33]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"20",height:"20"},[(0,s.Lk)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)])]))],2),(0,s.bF)(c,{class:"theme-toggle-btn"}),(0,s.Lk)("span",Ci,(0,a.v_)(o.totalCount)+" 个文件",1)])]),o.loading&&0===o.files.length?((0,s.uX)(),(0,s.CE)("div",Ai,[...t[35]||(t[35]=[(0,s.Lk)("div",{class:"loading-spinner"},null,-1),(0,s.Lk)("p",null,"加载中...",-1)])])):o.error?((0,s.uX)(),(0,s.CE)("div",Si,[(0,s.Lk)("p",null,(0,a.v_)(o.error),1),o.canRetry?((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:t[5]||(t[5]=(...e)=>l.loadFiles&&l.loadFiles(...e)),class:"retry-btn"},"重试")):(0,s.Q3)("",!0),t[36]||(t[36]=(0,s.Fv)('

该图库由林酱贡献代码

',1))])):((0,s.uX)(),(0,s.CE)("div",xi,[l.folders.length>0?((0,s.uX)(),(0,s.CE)("div",Ei,[(0,s.Lk)("div",Mi,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.folders,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"folder-card",onClick:t=>l.enterFolder(e.name)},[t[37]||(t[37]=(0,s.Lk)("div",{class:"folder-icon"},[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8l-2-2z"})])],-1)),(0,s.Lk)("span",Pi,(0,a.v_)(l.getFolderName(e.name)),1)],8,Li))),128))])])):(0,s.Q3)("",!0),(0,s.Lk)("div",Ii,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.columns,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{key:i,class:"waterfall-column"},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(e,e=>((0,s.uX)(),(0,s.CE)("div",{key:e.name,class:"waterfall-item",onClick:t=>l.openPreview(e)},[(0,s.Lk)("div",{class:(0,a.C4)(["image-wrapper",{loaded:e.loaded}])},[l.isImage(e)?((0,s.uX)(),(0,s.CE)("img",{key:0,src:l.getFileUrl(e.name),alt:e.name,loading:"lazy",onLoad:t=>l.onImageLoad(t,e),onError:t[6]||(t[6]=(...e)=>l.handleImageError&&l.handleImageError(...e))},null,40,Ni)):l.isVideo(e)?((0,s.uX)(),(0,s.CE)("video",{key:1,src:l.getFileUrl(e.name),muted:"",loop:"",preload:"metadata",onLoadedmetadata:t=>l.onVideoLoad(t,e),onPointerenter:t[7]||(t[7]=e=>"mouse"===e.pointerType&&e.target.play()),onPointerleave:t[8]||(t[8]=e=>"mouse"===e.pointerType&&e.target.pause())},null,40,Di)):l.isAudio(e)?((0,s.uX)(),(0,s.CE)("div",Fi,[t[38]||(t[38]=(0,s.Lk)("svg",{class:"audio-icon",viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"})],-1)),(0,s.Lk)("span",_i,(0,a.v_)(l.getFileName(e.name)),1)])):((0,s.uX)(),(0,s.CE)("div",Ri,[t[39]||(t[39]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",Oi,(0,a.v_)(l.getFileName(e.name)),1)])),(0,s.Lk)("div",Hi,[(0,s.Lk)("div",Vi,[(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(t=>l.copyLink(e.name),["stop"]),title:"复制链接"},[...t[40]||(t[40]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"})],-1)])],8,ji),(0,s.Lk)("button",{class:"action-btn",onClick:(0,n.D$)(t=>l.downloadFile(e.name),["stop"]),title:"下载"},[...t[41]||(t[41]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"})],-1)])],8,qi)])])],2)],8,$i))),128))]))),128))],512),l.mediaFiles.length>o.pageSize?((0,s.uX)(),(0,s.CE)("div",Bi,[(0,s.Lk)("span",null,(0,a.v_)(l.displayCurrentPage)+" / "+(0,a.v_)(l.totalPages),1)])):(0,s.Q3)("",!0),(0,s.Lk)("div",Ui,[o.loading&&o.files.length>0?((0,s.uX)(),(0,s.CE)("div",Xi,[...t[42]||(t[42]=[(0,s.Lk)("div",{class:"loading-spinner-small"},null,-1),(0,s.Lk)("span",null,"加载中...",-1)])])):!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("div",zi," 已加载全部 ")):(0,s.Q3)("",!0),!o.hasMore&&l.mediaFiles.length>0?((0,s.uX)(),(0,s.CE)("a",Wi," 林酱贡献 ")):(0,s.Q3)("",!0)],512)],512)),o.previewVisible?((0,s.uX)(),(0,s.CE)("div",{key:3,class:"preview-modal",onClick:t[31]||(t[31]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["self"]))},[(0,s.Lk)("button",{class:"preview-close",onClick:t[9]||(t[9]=(0,n.D$)((...e)=>l.closePreview&&l.closePreview(...e),["stop"]))},[...t[43]||(t[43]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)])]),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("div",{key:0,class:"preview-content",onClick:t[15]||(t[15]=(0,n.D$)(()=>{},["stop"])),onWheel:t[16]||(t[16]=(0,n.D$)((...e)=>l.handleWheel&&l.handleWheel(...e),["prevent"]))},[l.currentPreviewFile&&l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("img",{key:"img-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),class:"preview-image",style:(0,a.Tr)(l.desktopImageStyle),draggable:"false",onMousedown:t[10]||(t[10]=(...e)=>l.onImageMouseDown&&l.onImageMouseDown(...e)),onMousemove:t[11]||(t[11]=(...e)=>l.onImageMouseMove&&l.onImageMouseMove(...e)),onMouseup:t[12]||(t[12]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e)),onMouseleave:t[13]||(t[13]=(...e)=>l.onImageMouseUp&&l.onImageMouseUp(...e))},null,44,Ki)):l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"desktopVideo",key:"video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",class:"preview-video",style:(0,a.Tr)(l.desktopImageStyle),onPlay:t[14]||(t[14]=(...e)=>l.onDesktopVideoPlay&&l.onDesktopVideoPlay(...e))},null,44,Yi)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.Wv)(h,{ref:"desktopAudio",key:"audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])):(0,s.Q3)("",!0)],32)),o.isMobile?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"preview-content preview-content-mobile",onClick:t[27]||(t[27]=(0,n.D$)(()=>{},["stop"]))},[l.currentPreviewFile&&l.isVideo(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("video",{ref:"mobileVideo",key:"m-video-"+l.currentPreviewFile.name,src:l.getFileUrl(l.currentPreviewFile.name),controls:"",playsinline:"","webkit-playsinline":"","x5-video-player-type":"h5","x5-video-player-fullscreen":"true",class:"mobile-video-native",onPlay:t[17]||(t[17]=(...e)=>l.onMobileMediaPlay&&l.onMobileMediaPlay(...e))},null,40,Qi)):l.currentPreviewFile&&l.isAudio(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",{key:1,class:"mobile-audio-wrap",onTouchstart:t[18]||(t[18]=(...e)=>l.onAudioSwipeStart&&l.onAudioSwipeStart(...e)),onTouchmove:t[19]||(t[19]=(...e)=>l.onAudioSwipeMove&&l.onAudioSwipeMove(...e)),onTouchend:t[20]||(t[20]=(...e)=>l.onAudioSwipeEnd&&l.onAudioSwipeEnd(...e))},[((0,s.uX)(),(0,s.Wv)(h,{ref:"mobileAudio",key:"m-audio-"+l.currentPreviewFile.name,file:l.currentPreviewFile,src:l.getFileUrl(l.currentPreviewFile.name),"is-image":!1,"is-video":!1,"is-audio":!0,"is-active":!0,onAudioEnded:l.onAudioEnded},null,8,["file","src","onAudioEnded"])),t[44]||(t[44]=(0,s.Lk)("div",{class:"swipe-hint"},"← 滑动切换 →",-1))],32)):l.currentPreviewFile&&!l.isImage(l.currentPreviewFile)?((0,s.uX)(),(0,s.CE)("div",Ji,[t[45]||(t[45]=(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13z"})],-1)),(0,s.Lk)("span",Gi,(0,a.v_)(l.getFileName(l.currentPreviewFile.name)),1)])):((0,s.uX)(),(0,s.CE)("div",{key:3,class:"swipe-viewport",ref:"mobileViewport",onTouchstart:t[24]||(t[24]=(...e)=>l.onSwipeStart&&l.onSwipeStart(...e)),onTouchmove:t[25]||(t[25]=(...e)=>l.onSwipeMove&&l.onSwipeMove(...e)),onTouchend:t[26]||(t[26]=(...e)=>l.onSwipeEnd&&l.onSwipeEnd(...e))},[(0,s.Lk)("div",{class:"swipe-track",style:(0,a.Tr)(l.swipeTrackStyle),onTransitionend:t[23]||(t[23]=(...e)=>l.onSwipeTransitionEnd&&l.onSwipeTransitionEnd(...e))},[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(l.swipeWindow,(e,i)=>((0,s.uX)(),(0,s.CE)("div",{class:"swipe-slide",key:l.getSlideKey(e,i)},[e?((0,s.uX)(),(0,s.Wv)(h,{key:0,file:e,src:l.getFileUrl(e.name),"is-image":l.isImage(e),"is-video":!1,"is-audio":!1,"is-active":1===i,onLock:t[21]||(t[21]=e=>o.gestureLocked=!0),onUnlock:t[22]||(t[22]=e=>o.gestureLocked=!1),onEdgeSwipe:l.onEdgeSwipe},null,8,["file","src","is-image","is-active","onEdgeSwipe"])):(0,s.Q3)("",!0)]))),128))],36)],544))])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndex>0?((0,s.uX)(),(0,s.CE)("button",{key:2,class:"preview-prev",onClick:t[28]||(t[28]=(0,n.D$)((...e)=>l.prevImage&&l.prevImage(...e),["stop"]))},[...t[46]||(t[46]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"})],-1)])])):(0,s.Q3)("",!0),!o.isMobile&&o.previewIndexl.nextImage&&l.nextImage(...e),["stop"]))},[...t[47]||(t[47]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})],-1)])])):(0,s.Q3)("",!0),o.isMobile?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("button",{key:4,class:"rotate-btn",onClick:t[30]||(t[30]=(0,n.D$)((...e)=>l.rotateImage&&l.rotateImage(...e),["stop"])),title:"旋转90°"},[...t[48]||(t[48]=[(0,s.Lk)("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[(0,s.Lk)("path",{d:"M16.89 8.53l1.41-1.42C19.2 8.27 19.76 9.61 19.93 11h-2.02c-.14-.87-.49-1.72-1.02-2.47zM17.91 13h2.02c-.17 1.39-.72 2.73-1.62 3.89l-1.41-1.42c.52-.75.87-1.59 1.01-2.47zm-1.01 5.32c-1.16.9-2.51 1.44-3.9 1.61V17.9c.87-.15 1.71-.49 2.46-1.03l1.44 1.45zM11 4.07V1l4.55 4.55L11 10V6.09c-2.84.48-5 2.94-5 5.91s2.16 5.43 5 5.91v2.02c-3.95-.49-7-3.85-7-7.93s3.05-7.44 7-7.93z"})],-1)])])),(0,s.Lk)("div",Zi,(0,a.v_)(o.previewIndex+1)+" / "+(0,a.v_)(l.mediaFiles.length),1)])):(0,s.Q3)("",!0)])}var ts=i(4373),is=i(8401),ss={name:"PublicBrowse",components:{TransformMedia:pi,ToggleDark:mi.A},data(){return{files:[],allowedDirs:[],rootDir:"",currentPath:"",totalCount:0,loading:!1,error:null,canRetry:!0,hasMore:!0,previewVisible:!1,previewIndex:0,observer:null,pageSize:24,searchInput:"",searchKeyword:"",currentStartIndex:0,searchExpanded:!1,filterType:"",lastScrollY:0,scrollPage:0,columnCount:4,columnHeights:[0,0,0,0],imageRotation:0,imageScale:1,imageTx:0,imageTy:0,imageDragging:!1,imageDragStart:null,imageStartTx:0,imageStartTy:0,swipeX:0,swipeStartX:0,swipeStartY:0,swipeStartT:0,swipeActive:!1,swipeAnimating:!1,swipeDir:0,viewportW:0,gestureLocked:!1,audioSwipeStartX:0,audioSwipeStartT:0,audioSwipeActive:!1,isMobile:!1}},computed:{...(0,is.L8)(["userConfig"]),siteName(){return this.userConfig?.siteTitle||"Sanyue ImgHub"},rootDirName(){return this.rootDir.split("/").filter(Boolean).pop()||"根目录"},pathParts(){if(!this.currentPath||!this.rootDir)return[];const e=this.currentPath.replace(this.rootDir,"").replace(/^\/+/,"");return e.split("/").filter(Boolean)},folders(){return this.files.filter(e=>e.isFolder)},mediaFiles(){return this.files.filter(e=>!e.isFolder)},totalPages(){return Math.ceil(this.totalCount/this.pageSize)},displayCurrentPage(){const e=Math.floor(this.currentStartIndex/this.pageSize)+1,t=Math.ceil(this.mediaFiles.length/this.pageSize);return Math.min(e+Math.floor(this.scrollPage*t),this.totalPages)},columns(){const e=Array.from({length:this.columnCount},()=>[]);for(const t of this.mediaFiles){const i=t.columnIndex??0;i0?this.mediaFiles[this.previewIndex-1]:null},nextPreviewFile(){return this.previewIndex1?this.imageDragging?"grabbing":"grab":"default"}},swipeWindow(){return[this.prevPreviewFile,this.currentPreviewFile,this.nextPreviewFile]},swipeTrackStyle(){const e=-this.viewportW,t=e+this.swipeX;return{transform:`translate3d(${t}px, 0, 0)`,transition:this.swipeAnimating?"transform 0.28s ease":"none"}}},watch:{"$route.params.dir":{handler(){this.initFromRoute()}}},mounted(){oi(),this.checkMobile(),this.initFromRoute(),this.setupIntersectionObserver(),this.updateColumnCount(),window.addEventListener("resize",this.updateColumnCount),window.addEventListener("resize",this.checkMobile),window.addEventListener("scroll",this.handleScroll)},beforeUnmount(){this.observer&&this.observer.disconnect(),window.removeEventListener("resize",this.updateColumnCount),window.removeEventListener("resize",this.checkMobile),window.removeEventListener("scroll",this.handleScroll)},methods:{handleSearch(){const e=this.searchInput.trim();if(!e)return this.searchKeyword="",this.filterType="",this.currentStartIndex=0,void this.resetAndLoad();const t=e.match(/^#(\d+)$/);if(t){const e=parseInt(t[1],10),i=Math.ceil(this.totalCount/this.pageSize),s=Math.min(Math.max(1,e),i||1);return this.currentStartIndex=(s-1)*this.pageSize,this.searchKeyword="",this.filterType="",this.searchInput="",void this.resetAndLoad()}const i={"图片":"image","图":"image",image:"image",img:"image","照片":"image","视频":"video",video:"video","影片":"video","电影":"video","音乐":"audio","音频":"audio",audio:"audio",music:"audio","歌曲":"audio"},s=e.toLowerCase();if(i[s])return this.filterType=i[s],this.searchKeyword="",this.currentStartIndex=0,void this.resetAndLoad();this.filterType="",this.searchKeyword=e,this.currentStartIndex=0,this.resetAndLoad()},resetAndLoad(){this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.loadFiles().then(()=>{this.observeLoadTrigger()})},toggleSearch(){this.searchExpanded=!this.searchExpanded,this.searchExpanded&&this.$nextTick(()=>{this.$refs.searchInputRef?.focus()})},handleScroll(){const e=window.scrollY;this.searchExpanded&&e>this.lastScrollY+20&&(this.searchExpanded=!1),this.lastScrollY=e;const t=this.$refs.galleryContainer;if(t&&this.mediaFiles.length>0){t.getBoundingClientRect();const i=t.offsetTop,s=t.scrollHeight-window.innerHeight;if(s>0){const t=Math.max(0,e-i);this.scrollPage=Math.min(1,t/s)}else this.scrollPage=0}},checkMobile(){this.isMobile=window.innerWidth<=600},getSlideKey(e,t){return e?1===t?`${e.name}-${this.previewIndex}`:e.name:`empty-${t}`},updateColumnCount(){const e=window.innerWidth;let t;t=e<600?2:e<900?3:4,t!==this.columnCount&&(this.columnCount=t,this.columnHeights=new Array(this.columnCount).fill(0),this.mediaFiles.forEach(e=>{e.columnIndex=void 0,this.assignToColumn(e)}))},getShortestColumn(){let e=0,t=this.columnHeights[0];for(let i=1;i{const t=e[0];t.isIntersecting&&this.hasMore&&!this.loading&&this.loadMore()},{rootMargin:"200px"})},observeLoadTrigger(){this.$nextTick(()=>{this.$refs.loadTrigger&&this.observer&&this.observer.observe(this.$refs.loadTrigger)})},async initFromRoute(){const e=this.$route.params.dir||"",t=Array.isArray(e)?e.join("/"):e,i=t.split("/").filter(Boolean);this.rootDir=i[0]||"",this.currentPath=t,this.files=[],this.hasMore=!0,this.columnHeights=new Array(this.columnCount).fill(0),this.searchInput="",this.searchKeyword="",this.filterType="",this.currentStartIndex=0,await this.loadFiles(),this.observeLoadTrigger()},async loadFiles(){this.loading=!0,this.error=null,this.canRetry=!0;try{let e=`/api/public/list?dir=${encodeURIComponent(this.currentPath)}&start=${this.currentStartIndex}&count=${this.pageSize}`;this.searchKeyword&&(e+=`&search=${encodeURIComponent(this.searchKeyword)}`),this.filterType&&(e+=`&type=${this.filterType}`);const t=await ts.A.get(e);t.data.allowedDirs&&(this.allowedDirs=t.data.allowedDirs);const i=(t.data.directories||[]).map(e=>({name:e,isFolder:!0})),s=(t.data.files||[]).map(e=>({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));s.forEach(e=>this.assignToColumn(e)),this.files=[...i,...s],this.totalCount=t.data.totalCount||this.files.length,this.hasMore=this.currentStartIndex+this.mediaFiles.length({name:e.name,isFolder:!1,metadata:e.metadata,columnIndex:void 0}));s.forEach(e=>this.assignToColumn(e)),this.files.push(...s),this.hasMore=this.currentStartIndex+this.mediaFiles.length{t.src=e+"?_retry="+Date.now()},500*(i+1))}else t.style.display="none"},copyLink(e){const t=this.getFileUrl(e);navigator.clipboard?.writeText(t).then(()=>{this.showToast("已复制")}).catch(()=>{const e=document.createElement("input");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.showToast("已复制")})},showToast(e){const t=document.querySelector(".copy-toast");t&&t.remove();const i=document.createElement("div");i.className="copy-toast",i.textContent=e,document.body.appendChild(i),setTimeout(()=>i.classList.add("show"),10),setTimeout(()=>{i.classList.remove("show"),setTimeout(()=>i.remove(),300)},1500)},downloadFile(e){const t=document.createElement("a");t.href=this.getFileUrl(e),t.download=e.split("/").pop(),t.click()},openPreview(e){if(e.isFolder)return;ai(null);const t=this.mediaFiles.findIndex(t=>t.name===e.name);t>=0&&(this.previewIndex=t,this.previewVisible=!0,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow="hidden",this.$nextTick(()=>{this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth}))},closePreview(){ai(null),this.previewVisible=!1,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0,this.gestureLocked=!1,document.body.style.overflow=""},prevImage(){ai(null),this.previewIndex>0&&(this.previewIndex--,this.imageRotation=0,this.imageScale=1,this.imageTx=0,this.imageTy=0)},nextImage(){ai(null),this.previewIndex0?-.1:.1;let i=this.imageScale+t;i=Math.max(.5,Math.min(4,i)),this.imageScale=i,i<=1&&(this.imageTx=0,this.imageTy=0)},onImageMouseDown(e){this.imageScale<=1||(e.preventDefault(),this.imageDragging=!0,this.imageDragStart={x:e.clientX,y:e.clientY},this.imageStartTx=this.imageTx,this.imageStartTy=this.imageTy)},onImageMouseMove(e){if(!this.imageDragging)return;const t=e.clientX-this.imageDragStart.x,i=e.clientY-this.imageDragStart.y;this.imageTx=this.imageStartTx+t,this.imageTy=this.imageStartTy+i},onImageMouseUp(){this.imageDragging=!1},onSwipeStart(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0];this.swipeStartX=t.clientX,this.swipeStartY=t.clientY,this.swipeStartT=performance.now(),this.swipeX=0,this.swipeActive=!1,this.viewportW=this.$refs.mobileViewport?.getBoundingClientRect().width||window.innerWidth},onSwipeMove(e){if(this.gestureLocked)return;if(this.swipeAnimating)return;const t=e.touches[0],i=t.clientX-this.swipeStartX,s=t.clientY-this.swipeStartY;if(!this.swipeActive){if(Math.abs(i)<8)return;if(Math.abs(i)<=Math.abs(s))return;this.swipeActive=!0}e.preventDefault();let n=i;0===this.previewIndex&&n>0?n=this.rubberBand(n,this.viewportW,.55):this.previewIndex===this.mediaFiles.length-1&&n<0&&(n=-this.rubberBand(-n,this.viewportW,.55)),this.swipeX=n},onSwipeEnd(){if(this.gestureLocked)return;if(this.swipeAnimating)return;if(!this.swipeActive)return void(this.swipeX=0);const e=Math.max(1,performance.now()-this.swipeStartT),t=this.swipeX/e,i=.2*this.viewportW;let s=0;(this.swipeX<=-i||t<=-.8)&&(s=1),(this.swipeX>=i||t>=.8)&&(s=-1),(-1===s&&0===this.previewIndex||1===s&&this.previewIndex===this.mediaFiles.length-1)&&(s=0),this.swipeDir=s,this.swipeAnimating=!0,this.swipeX=1===s?-this.viewportW:-1===s?+this.viewportW:0},onSwipeTransitionEnd(){this.swipeAnimating&&(1===this.swipeDir&&this.previewIndex++,-1===this.swipeDir&&this.previewIndex--,this.swipeAnimating=!1,this.swipeDir=0,this.swipeX=0)},rubberBand(e,t,i=.55){return e*t*i/(t+i*e)},onEdgeSwipe(e){-1===e&&0===this.previewIndex||1===e&&this.previewIndex===this.mediaFiles.length-1||(this.swipeDir=e,this.swipeAnimating=!0,1===e?this.swipeX=-this.viewportW:-1===e&&(this.swipeX=+this.viewportW))},onAudioSwipeStart(e){const t=e.touches[0];this.audioSwipeStartX=t.clientX,this.audioSwipeStartT=performance.now(),this.audioSwipeActive=!1},onAudioSwipeMove(e){if(!this.audioSwipeStartX)return;const t=e.touches[0],i=t.clientX-this.audioSwipeStartX;Math.abs(i)>30&&(this.audioSwipeActive=!0)},onAudioSwipeEnd(e){if(!this.audioSwipeActive)return void(this.audioSwipeStartX=0);const t=e.changedTouches[0],i=t.clientX-this.audioSwipeStartX,s=Math.max(1,performance.now()-this.audioSwipeStartT),n=i/s,a=80;i>a||n>.5?this.prevImage():(i<-a||n<-.5)&&this.nextImage(),this.audioSwipeStartX=0,this.audioSwipeActive=!1},onDesktopVideoPlay(e){ai(e.target)},onMobileMediaPlay(e){ai(e.target)},onAudioEnded(e){"next"===e&&this.previewIndex{setTimeout(()=>{const e=this.isMobile?this.$refs.mobileAudio:this.$refs.desktopAudio;e?.player&&e.player.play()},100)}))}}};const ns=(0,di.A)(ss,[["render",es],["__scopeId","data-v-40c0acc5"]]);var as=ns}}]); -//# sourceMappingURL=667.bbd60d43.js.map \ No newline at end of file diff --git a/js/667.bbd60d43.js.gz b/js/667.bbd60d43.js.gz deleted file mode 100644 index 42eb354..0000000 Binary files a/js/667.bbd60d43.js.gz and /dev/null differ diff --git a/js/667.bbd60d43.js.map b/js/667.bbd60d43.js.map deleted file mode 100644 index 1001ca6..0000000 --- a/js/667.bbd60d43.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/667.bbd60d43.js","mappings":"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","sources":["webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sanyue_imghub/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sanyue_imghub/./node_modules/loadjs/dist/loadjs.umd.js","webpack://sanyue_imghub/src/js/rangetouch.js","webpack://sanyue_imghub/src/js/config.js","webpack://sanyue_imghub/src/js/utils/css.js","webpack://sanyue_imghub/src/js/utils/is.js","webpack://sanyue_imghub/src/js/utils/numbers.js","webpack://sanyue_imghub/src/js/utils/events.js","webpack://sanyue_imghub/./src/components/ToggleDark.vue?6d4a","webpack://sanyue_imghub/./src/components/ToggleDark.vue","webpack://sanyue_imghub/./src/components/ToggleDark.vue?0bce","webpack://sanyue_imghub/./src/components/TransformMedia.vue?15d4","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/is.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/animation.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/objects.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/elements.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/support.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/events.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/promise.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/arrays.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/style.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/html5.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/browser.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/strings.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/i18n.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/storage.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/fetch.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-sprite.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/time.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/controls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/urls.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/captions.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/defaults.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/states.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/config/types.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/console.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/fullscreen.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-image.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/ui.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/listeners.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/load-script.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/vimeo.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/youtube.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/media.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/ads.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/utils/numbers.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plugins/preview-thumbnails.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/source.js","webpack://sanyue_imghub/./node_modules/plyr/src/js/plyr.js","webpack://sanyue_imghub/./src/utils/mediaManager.js","webpack://sanyue_imghub/./src/components/TransformMedia.vue","webpack://sanyue_imghub/./src/components/TransformMedia.vue?c392","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?699c","webpack://sanyue_imghub/./src/views/PublicBrowse.vue","webpack://sanyue_imghub/./src/views/PublicBrowse.vue?bab5"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathname = path.replace(/[\\?|#].*$/, ''),\n pathStripped = path.replace(/^(css|img|module|nomodule)!/, ''),\n isLegacyIECss,\n hasModuleSupport,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(pathname)) {\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped;\n\n // tag IE9+\n isLegacyIECss = 'hideFocus' in e;\n\n // use preload in IE Edge (to detect load errors)\n if (isLegacyIECss && e.relList) {\n isLegacyIECss = 0;\n e.rel = 'preload';\n e.as = 'style';\n }\n } else if (/(^img!|\\.(png|gif|jpg|svg|webp)$)/.test(pathname)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = pathStripped;\n e.async = async === undefined ? true : async;\n\n // handle es modules\n // modern browsers:\n // module: add to dom with type=\"module\"\n // nomodule: call success() callback without adding to dom\n // legacy browsers:\n // module: call success() callback without adding to dom\n // nomodule: add to dom with default type (\"text/javascript\")\n hasModuleSupport = 'noModule' in e;\n if (/^module!/.test(pathname)) {\n if (!hasModuleSupport) return callbackFn(path, 'l');\n e.type = \"module\";\n } else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, 'l');\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // treat empty stylesheets as failures to get around lack of onerror\n // support in IE9-11\n if (isLegacyIECss) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n } else if (e.rel == 'preload' && e.as == 'style') {\n // activate preloaded stylesheets\n return e.rel = 'stylesheet'; // jshint ignore:line\n }\n \n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success\n * callback or (3) object literal with success/error arguments, numRetries,\n * etc.\n * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object\n * literal with success/error arguments, numRetries, etc.\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n function loadFn(resolve, reject) {\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n \n // resolve Promise\n if (resolve) {\n executeCallbacks({success: resolve, error: reject}, pathsNotFound);\n }\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n }\n \n if (args.returnPromise) return new Promise(loadFn);\n else loadFn();\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// rangetouch.js v2.0.0\n// Making work on touch devices\n// https://github.com/sampotts/rangetouch\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport defaults from './config';\nimport { matches } from './utils/css';\nimport { trigger } from './utils/events';\nimport is from './utils/is';\nimport { round } from './utils/numbers';\n\nclass RangeTouch {\n /**\n * Setup a new instance\n * @param {String|Element} target\n * @param {Object} options\n */\n constructor(target, options) {\n if (is.element(target)) {\n // An Element is passed, use it directly\n this.element = target;\n } else if (is.string(target)) {\n // A CSS Selector is passed, fetch it from the DOM\n this.element = document.querySelector(target);\n }\n\n if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n return;\n }\n\n this.config = { ...defaults, ...options };\n\n this.init();\n }\n\n static get enabled() {\n return 'ontouchstart' in document.documentElement;\n }\n\n /**\n * Setup multiple instances\n * @param {String|Element|NodeList|Array} target\n * @param {Object} options\n */\n static setup(target, options = {}) {\n let targets = null;\n\n if (is.empty(target) || is.string(target)) {\n targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n } else if (is.element(target)) {\n targets = [target];\n } else if (is.nodeList(target)) {\n targets = Array.from(target);\n } else if (is.array(target)) {\n targets = target.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n const config = { ...defaults, ...options };\n\n if (is.string(target) && config.watch) {\n // Create an observer instance\n const observer = new MutationObserver(mutations => {\n Array.from(mutations).forEach(mutation => {\n Array.from(mutation.addedNodes).forEach(node => {\n if (!is.element(node) || !matches(node, target)) {\n return;\n }\n\n // eslint-disable-next-line no-unused-vars\n const range = new RangeTouch(node, config);\n });\n });\n });\n\n // Pass in the target node, as well as the observer options\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n return targets.map(t => new RangeTouch(t, options));\n }\n\n init() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Add useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = 'none';\n this.element.style.webKitUserSelect = 'none';\n this.element.style.touchAction = 'manipulation';\n }\n\n this.listeners(true);\n\n this.element.rangeTouch = this;\n }\n\n destroy() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Remove useful CSS\n if (this.config.addCSS) {\n this.element.style.userSelect = '';\n this.element.style.webKitUserSelect = '';\n this.element.style.touchAction = '';\n }\n\n this.listeners(false);\n\n this.element.rangeTouch = null;\n }\n\n listeners(toggle) {\n const method = toggle ? 'addEventListener' : 'removeEventListener';\n\n // Listen for events\n ['touchstart', 'touchmove', 'touchend'].forEach(type => {\n this.element[method](type, event => this.set(event), false);\n });\n }\n\n /**\n * Get the value based on touch position\n * @param {Event} event\n */\n get(event) {\n if (!RangeTouch.enabled || !is.event(event)) {\n return null;\n }\n\n const input = event.target;\n const touch = event.changedTouches[0];\n const min = parseFloat(input.getAttribute('min')) || 0;\n const max = parseFloat(input.getAttribute('max')) || 100;\n const step = parseFloat(input.getAttribute('step')) || 1;\n const delta = max - min;\n\n // Calculate percentage\n let percent;\n const clientRect = input.getBoundingClientRect();\n const thumbWidth = ((100 / clientRect.width) * (this.config.thumbWidth / 2)) / 100;\n\n // Determine left percentage\n percent = (100 / clientRect.width) * (touch.clientX - clientRect.left);\n\n // Don't allow outside bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Factor in the thumb offset\n if (percent < 50) {\n percent -= (100 - percent * 2) * thumbWidth;\n } else if (percent > 50) {\n percent += (percent - 50) * 2 * thumbWidth;\n }\n\n // Find the closest step to the mouse position\n return min + round(delta * (percent / 100), step);\n }\n\n /**\n * Update range value based on position\n * @param {Event} event\n */\n set(event) {\n if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n return;\n }\n\n // Prevent text highlight on iOS\n event.preventDefault();\n\n // Set value\n // eslint-disable-next-line no-param-reassign\n event.target.value = this.get(event);\n\n // Trigger event\n trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n }\n}\n\nexport default RangeTouch;\n","const defaults = {\n addCSS: true, // Add CSS to the element to improve usability (required here or in your CSS!)\n thumbWidth: 15, // The width of the thumb handle\n watch: true, // Watch for new elements that match a string target\n};\n\nexport default defaults;","// Element matches a selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return method.call(element, selector);\n}\n\nexport default { matches };\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isEvent = input => instanceOf(input, Event);\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n nodeList: isNodeList,\n element: isElement,\n event: isEvent,\n empty: isEmpty,\n};\n","// Get the number of decimal places\nexport function getDecimalPlaces(value) {\n const match = `${value}`.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) -\n // Adjust for scientific notation.\n (match[2] ? +match[2] : 0),\n );\n}\n\n// Round to the nearest step\nexport function round(number, step) {\n if (step < 1) {\n const places = getDecimalPlaces(step);\n return parseFloat(number.toFixed(places));\n }\n return Math.round(number / step) * step;\n}\n\nexport default { getDecimalPlaces, round };\n","// Trigger event\nexport function trigger(element, type) {\n if (!element || !type) {\n return;\n }\n\n // Create and dispatch the event\n const event = new Event(type, { bubbles: true });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\nexport default { trigger };\n","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=466b2b5c&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=466b2b5c&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-466b2b5c\"]])\n\nexport default __exports__","import { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, withModifiers as _withModifiers, toDisplayString as _toDisplayString } from \"vue\";\nconst _hoisted_1 = [\"src\"];\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = {\n key: 2,\n class: \"video-placeholder\"\n};\nconst _hoisted_4 = {\n class: \"audio-cover\"\n};\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n};\nconst _hoisted_7 = {\n class: \"audio-info\"\n};\nconst _hoisted_8 = {\n class: \"audio-title\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"audio-artist\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 4,\n class: \"audio-placeholder\"\n};\nconst _hoisted_12 = {\n class: \"audio-name\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(\"div\", {\n class: \"tm-viewport\",\n ref: \"viewport\",\n onPointerdown: _cache[3] || (_cache[3] = (...args) => $options.onPointerDown && $options.onPointerDown(...args)),\n onPointermove: _cache[4] || (_cache[4] = (...args) => $options.onPointerMove && $options.onPointerMove(...args)),\n onPointerup: _cache[5] || (_cache[5] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onPointercancel: _cache[6] || (_cache[6] = (...args) => $options.onPointerUp && $options.onPointerUp(...args)),\n onDblclick: _cache[7] || (_cache[7] = _withModifiers((...args) => $options.onDblClick && $options.onDblClick(...args), [\"prevent\"]))\n }, [$props.isImage ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"tm-media\",\n src: $props.src,\n draggable: \"false\",\n style: _normalizeStyle($options.mediaStyle),\n onLoad: _cache[0] || (_cache[0] = (...args) => $options.onLoad && $options.onLoad(...args))\n }, null, 44, _hoisted_1)) : $props.isVideo && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"tm-video-wrap\",\n onPointerdown: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"video\", {\n ref: \"videoEl\",\n class: \"plyr-video\",\n src: $props.src,\n playsinline: \"\"\n }, null, 8, _hoisted_2)], 32)) : $props.isVideo ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"svg\", {\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M8 5v14l11-7z\"\n })], -1)]))])) : $props.isAudio && $props.isActive ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: \"tm-audio-wrap\",\n onPointerdown: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"stop\"]))\n }, [_createElementVNode(\"div\", _hoisted_4, [$data.audioCover ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $data.audioCover,\n class: \"cover-img\"\n }, null, 8, _hoisted_5)) : (_openBlock(), _createElementBlock(\"svg\", _hoisted_6, [...(_cache[9] || (_cache[9] = [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n }, null, -1)]))]))]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, _toDisplayString($data.audioTitle), 1), $data.audioArtist ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, _toDisplayString($data.audioArtist), 1)) : _createCommentVNode(\"\", true)]), _createElementVNode(\"audio\", {\n ref: \"audioEl\",\n class: \"plyr-audio\",\n src: $props.src\n }, null, 8, _hoisted_10)], 32)) : $props.isAudio ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_cache[10] || (_cache[10] = _createElementVNode(\"svg\", {\n class: \"audio-icon-large\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\"\n }, [_createElementVNode(\"path\", {\n d: \"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\"\n })], -1)), _createElementVNode(\"span\", _hoisted_12, _toDisplayString($data.audioTitle), 1)])) : _createCommentVNode(\"\", true)], 544);\n}","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => typeof input === 'function';\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise) && isFunction(input.then);\n\nfunction isElement(input) {\n return input !== null\n && typeof input === 'object'\n && input.nodeType === 1\n && typeof input.style === 'object'\n && typeof input.ownerDocument === 'object';\n}\n\nfunction isEmpty(input) {\n return isNullOrUndefined(input)\n || ((isString(input) || isArray(input) || isNodeList(input)) && !input.length)\n || (isObject(input) && !Object.keys(input).length);\n}\n\nfunction isUrl(input) {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n }\n catch {\n return false;\n }\n}\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element, delay) {\n setTimeout(() => {\n try {\n element.hidden = true;\n // eslint-disable-next-line no-unused-expressions\n element.offsetHeight;\n element.hidden = false;\n }\n catch {}\n }, delay);\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach((key) => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport is from './is';\nimport { extend } from './objects';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n }\n else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) return;\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.textContent = text;\n }\n\n // Return built element\n return element;\n}\n\n// Insert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) return;\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) return;\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) return;\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) return null;\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) return {};\n\n const attributes = {};\n const existing = extend({}, existingAttributes);\n\n sel.split(',').forEach((s) => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n // Get the parts and value\n const parts = stripped.split('=');\n const [key] = parts;\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.string(existing.class)) {\n attributes.class = `${existing.class} ${className}`;\n }\n else {\n attributes.class = className;\n }\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return extend(existing, attributes);\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) return;\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n element.hidden = hide;\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const { prototype } = Element;\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const method\n = prototype.matches\n || prototype.webkitMatchesSelector\n || prototype.mozMatchesSelector\n || prototype.msMatchesSelector\n || match;\n\n return method.call(element, selector);\n}\n\n// Closest ancestor element matching selector (also tests element itself)\nexport function closest(element, selector) {\n const { prototype } = Element;\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n function closestElement() {\n let el = this;\n\n do {\n if (matches.matches(el, selector)) return el;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n }\n\n const method = prototype.closest || closestElement;\n\n return method.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, focusVisible = false) {\n if (!is.element(element)) return;\n\n // Set regular focus\n element.focus({ preventScroll: true, focusVisible });\n}\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider) {\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput;\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n pip: (() => {\n return (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture);\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n }\n catch {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n catch {}\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach((type) => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: { ...detail, plyr: this },\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach((item) => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","import is from './is';\n/**\n * Silence a Promise-like object.\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n * @param {object} value An object that may or may not be `Promise`-like.\n */\nexport function silencePromise(value) {\n if (is.promise(value)) {\n value.then(null, () => {});\n }\n}\n\nexport default { silencePromise };\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Style utils\n// ==========================================================================\n\nimport { closest } from './arrays';\nimport is from './is';\n\n// Check support for a CSS declaration\nexport function supportsCSS(declaration) {\n if (!window || !window.CSS) {\n return false;\n }\n\n return window.CSS.supports(declaration);\n}\n\n// Standard/common aspect ratios\nconst standardRatios = [\n [1, 1],\n [4, 3],\n [3, 4],\n [5, 4],\n [4, 5],\n [3, 2],\n [2, 3],\n [16, 10],\n [10, 16],\n [16, 9],\n [9, 16],\n [21, 9],\n [9, 21],\n [32, 9],\n [9, 32],\n].reduce((out, [x, y]) => ({ ...out, [x / y]: [x, y] }), {});\n\n// Validate an aspect ratio\nexport function validateAspectRatio(input) {\n if (!is.array(input) && (!is.string(input) || !input.includes(':'))) {\n return false;\n }\n\n const ratio = is.array(input) ? input : input.split(':');\n\n return ratio.map(Number).every(is.number);\n}\n\n// Reduce an aspect ratio to it's lowest form\nexport function reduceAspectRatio(ratio) {\n if (!is.array(ratio) || !ratio.every(is.number)) {\n return null;\n }\n\n const [width, height] = ratio;\n const getDivider = (w, h) => (h === 0 ? w : getDivider(h, w % h));\n const divider = getDivider(width, height);\n\n return [width / divider, height / divider];\n}\n\n// Calculate an aspect ratio\nexport function getAspectRatio(input) {\n const parse = ratio => (validateAspectRatio(ratio) ? ratio.split(':').map(Number) : null);\n // Try provided ratio\n let ratio = parse(input);\n\n // Get from config\n if (ratio === null) {\n ratio = parse(this.config.ratio);\n }\n\n // Get from embed\n if (ratio === null && !is.empty(this.embed) && is.array(this.embed.ratio)) {\n ({ ratio } = this.embed);\n }\n\n // Get from HTML5 video\n if (ratio === null && this.isHTML5) {\n const { videoWidth, videoHeight } = this.media;\n ratio = [videoWidth, videoHeight];\n }\n\n return reduceAspectRatio(ratio);\n}\n\n// Set aspect ratio for responsive container\nexport function setAspectRatio(input) {\n if (!this.isVideo) {\n return {};\n }\n\n const { wrapper } = this.elements;\n const ratio = getAspectRatio.call(this, input);\n\n if (!is.array(ratio)) {\n return {};\n }\n\n const [x, y] = reduceAspectRatio(ratio);\n const useNative = supportsCSS(`aspect-ratio: ${x}/${y}`);\n const padding = (100 / x) * y;\n\n if (useNative) {\n wrapper.style.aspectRatio = `${x}/${y}`;\n }\n else {\n wrapper.style.paddingBottom = `${padding}%`;\n }\n\n // For Vimeo we have an extra
to hide the standard controls and UI\n if (this.isVimeo && !this.config.vimeo.premium && this.supported.ui) {\n const height = (100 / this.media.offsetWidth) * Number.parseInt(window.getComputedStyle(this.media).paddingBottom, 10);\n const offset = (height - padding) / (height / 50);\n\n if (this.fullscreen.active) {\n wrapper.style.paddingBottom = null;\n }\n else {\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n }\n else if (this.isHTML5) {\n wrapper.classList.add(this.config.classNames.videoFixedRatio);\n }\n\n return { padding, ratio };\n}\n\n// Round an aspect ratio to closest standard ratio\nexport function roundAspectRatio(x, y, tolerance = 0.05) {\n const ratio = x / y;\n const closestRatio = closest(Object.keys(standardRatios), ratio);\n\n // Check match is within tolerance\n if (Math.abs(closestRatio - ratio) <= tolerance) {\n return standardRatios[closestRatio];\n }\n\n // No match\n return [x, y];\n}\n\n// Get the size of the viewport\n// https://stackoverflow.com/questions/1248081/how-to-get-the-browser-viewport-dimensions\nexport function getViewportSize() {\n const width = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\n const height = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\n return [width, height];\n}\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { setAspectRatio } from './utils/style';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter((source) => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Whether we're forcing all options (e.g. for streaming)\n if (this.config.quality.forced) {\n return this.config.quality.options;\n }\n\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n setup() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set aspect ratio if fixed\n if (!is.empty(this.config.ratio)) {\n setAspectRatio.call(player);\n }\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(s => s.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n if (player.quality === input) {\n return;\n }\n\n // If we're using an external handler...\n if (player.config.quality.forced && is.function(player.config.quality.onChange)) {\n player.config.quality.onChange(input);\n }\n else {\n // Get sources\n const sources = html5.getSources.call(player);\n // Get first match for requested size\n const source = sources.find(s => Number(s.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState, playbackRate } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.speed = playbackRate;\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n silencePromise(player.play());\n }\n });\n\n // Load new source\n player.media.load();\n }\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst isIE = Boolean(window.document.documentMode);\nconst isEdge = /Edge/.test(navigator.userAgent);\nconst isWebKit = 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent);\nconst isIPhone = /iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n// navigator.platform may be deprecated but this check is still required\nconst isIPadOS = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\nconst isIos = /iPad|iPhone|iPod/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;\n\nexport default {\n isIE,\n isEdge,\n isWebKit,\n isIPhone,\n isIPadOS,\n isIos,\n};\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) return input;\n\n return input.toString().replace(/\\{(\\d+)\\}/g, (_, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurrences of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.textContent;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([k, v]) => {\n string = replaceAll(string, k, v);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) return false;\n const test = '___test';\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n return true;\n }\n catch {\n return false;\n }\n }\n\n get = (key) => {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n const store = window.localStorage.getItem(this.key);\n if (is.empty(store)) return null;\n const json = JSON.parse(store);\n return is.string(key) && key.length ? json[key] : json;\n };\n\n set = (object) => {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objects\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n try {\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n catch { }\n };\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text', withCredentials = false) {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) return;\n\n // Set to true if needed for CORS\n if (withCredentials) {\n request.withCredentials = true;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n }\n catch {\n resolve(request.responseText);\n }\n }\n else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n request.responseType = responseType;\n request.send();\n }\n catch (error) {\n reject(error);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then((result) => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n try {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n catch {}\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(undefined, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n }\n else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport RangeTouch from 'rangetouch';\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/load-sprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const host = window.location.host ? window.location.host : window.top.location.host;\n const cors = url.host !== host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n }\n catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n 'aria-hidden': 'true',\n 'focusable': 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n const attributes = { ...attr, class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ') };\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
`);\n }\n\n // Set position\n tipElement.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If duration is the 2**32 (shaka), Infinity (HLS), DASH-IF (Number.MAX_SAFE_INTEGER || Number.MAX_VALUE) indicating live we hide the currentTime and progressbar.\n // https://github.com/video-dev/hls.js/blob/5820d29d3c4c8a46e8b75f1e3afa3e68c1a9a2db/src/controller/buffer-controller.js#L415\n // https://github.com/google/shaka-player/blob/4d889054631f4e1cf0fbd80ddd2b71887c02e232/lib/media/streaming_engine.js#L1062\n // https://github.com/Dash-Industry-Forum/dash.js/blob/69859f51b969645b234666800d4cb596d89c602d/src/dash/models/DashManifestModel.js#L338\n if (this.duration >= 2 ** 32) {\n toggleHidden(this.elements.display.currentTime, true);\n toggleHidden(this.elements.progress, true);\n return;\n }\n\n // Update ARIA values\n if (is.element(this.elements.inputs.seek)) {\n this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n if (this.config.markers.enabled) {\n controls.setMarkers.call(this);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleMenuButton(setting, toggle) {\n toggleHidden(this.elements.settings.buttons[setting], !toggle);\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panels[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n }\n else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('[role=\"menu\"]');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.buttons[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panels.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panels.quality.querySelector('[role=\"menu\"]');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = (quality) => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach((quality) => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panels.loop.querySelector('[role=\"menu\"]');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.buttons.loop, false);\n toggleHidden(this.elements.settings.panels.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleMenuButton.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.captions)) {\n return;\n }\n\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panels.captions.querySelector('[role=\"menu\"]');\n const tracks = captions.getTracks.call(this);\n const toggle = Boolean(tracks.length);\n\n // Toggle the pane and tab\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!toggle) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panels.speed)) {\n return;\n }\n\n const type = 'speed';\n const list = this.elements.settings.panels.speed.querySelector('[role=\"menu\"]');\n\n // Filter out invalid speeds\n this.options.speed = this.options.speed.filter(o => o >= this.minimumSpeed && o <= this.maximumSpeed);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleMenuButton.call(this, type, toggle);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Create items\n this.options.speed.forEach((speed) => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { buttons } = this.elements.settings;\n const visible = !is.empty(buttons) && Object.values(buttons).some(button => !button.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Focus the first menu item in a given (or visible) menu\n focusFirstMenuItem(pane, focusVisible = false) {\n if (this.elements.settings.popup.hidden) {\n return;\n }\n\n let target = pane;\n\n if (!is.element(target)) {\n target = Object.values(this.elements.settings.panels).find(p => !p.hidden);\n }\n\n const firstItem = target.querySelector('[role^=\"menuitem\"]');\n\n setFocus.call(this, firstItem, focusVisible);\n },\n\n // Show/hide menu\n toggleMenu(input) {\n const { popup } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(popup) || !is.element(button)) {\n return;\n }\n\n // True toggle by default\n const { hidden } = popup;\n let show = hidden;\n\n if (is.boolean(input)) {\n show = input;\n }\n else if (is.keyboardEvent(input) && input.key === 'Escape') {\n show = false;\n }\n else if (is.event(input)) {\n // If Plyr is in a shadowDOM, the event target is set to the component, instead of the\n // Element in the shadowDOM. The path, if available, is complete.\n const target = is.function(input.composedPath) ? input.composedPath()[0] : input.target;\n const isMenuItem = popup.contains(target);\n\n // If the click was inside the menu or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && input.target !== button && show)) {\n return;\n }\n }\n\n // Set button attributes\n button.setAttribute('aria-expanded', show);\n\n // Show the actual popup\n toggleHidden(popup, !show);\n\n // Add class hook\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n // Focus the first item if key interaction\n if (show && is.keyboardEvent(input)) {\n controls.focusFirstMenuItem.call(this, null, true);\n }\n else if (!show && !hidden) {\n // If closing, re-focus the button\n setFocus.call(this, button, is.keyboardEvent(input));\n }\n },\n\n // Get the natural size of a menu panel\n getMenuSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Show a panel in the menu\n showMenuPanel(type = '', focusVisible = false) {\n const target = this.elements.container.querySelector(`#plyr-settings-${this.id}-${type}`);\n\n // Nothing to show, bail\n if (!is.element(target)) {\n return;\n }\n\n // Hide all other panels\n const container = target.parentNode;\n const current = Array.from(container.children).find(node => !node.hidden);\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getMenuSize.call(this, target);\n\n // Restore auto height/width\n const restore = (event) => {\n // We're only bothered about height and width on the container\n if (event.target !== container || !['width', 'height'].includes(event.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n\n // Set attributes on target\n toggleHidden(target, false);\n\n // Focus the first item\n controls.focusFirstMenuItem.call(this, target, focusVisible);\n },\n\n // Set the download URL\n setDownloadUrl() {\n const button = this.elements.buttons.download;\n\n // Bail if no button\n if (!is.element(button)) {\n return;\n }\n\n // Set attribute\n button.setAttribute('href', this.download);\n },\n\n // Build the default HTML\n create(data) {\n const {\n bindMenuItemShortcuts,\n createButton,\n createProgress,\n createRange,\n createTime,\n setQualityMenu,\n setSpeedMenu,\n showMenuPanel,\n } = controls;\n this.elements.controls = null;\n\n // Larger overlaid play button\n if (is.array(this.config.controls) && this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(createButton.call(this, 'play-large'));\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n this.elements.controls = container;\n\n // Default item attributes\n const defaultAttributes = { class: 'plyr__controls__item' };\n\n // Loop through controls in order\n dedupe(is.array(this.config.controls) ? this.config.controls : []).forEach((control) => {\n // Restart button\n if (control === 'restart') {\n container.appendChild(createButton.call(this, 'restart', defaultAttributes));\n }\n\n // Rewind button\n if (control === 'rewind') {\n container.appendChild(createButton.call(this, 'rewind', defaultAttributes));\n }\n\n // Play/Pause button\n if (control === 'play') {\n container.appendChild(createButton.call(this, 'play', defaultAttributes));\n }\n\n // Fast forward button\n if (control === 'fast-forward') {\n container.appendChild(createButton.call(this, 'fast-forward', defaultAttributes));\n }\n\n // Progress\n if (control === 'progress') {\n const progressContainer = createElement('div', {\n class: `${defaultAttributes.class} plyr__progress__container`,\n });\n\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n progress.appendChild(\n createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n }),\n );\n\n // Buffer progress\n progress.appendChild(createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n progressContainer.appendChild(this.elements.progress);\n container.appendChild(progressContainer);\n }\n\n // Media current time display\n if (control === 'current-time') {\n container.appendChild(createTime.call(this, 'currentTime', defaultAttributes));\n }\n\n // Media duration display\n if (control === 'duration') {\n container.appendChild(createTime.call(this, 'duration', defaultAttributes));\n }\n\n // Volume controls\n if (control === 'mute' || control === 'volume') {\n let { volume } = this.elements;\n\n // Create the volume container if needed\n if (!is.element(volume) || !container.contains(volume)) {\n volume = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__volume`.trim(),\n }),\n );\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle mute button\n if (control === 'mute') {\n volume.appendChild(createButton.call(this, 'mute'));\n }\n\n // Volume range control\n // Ignored on iOS as it's handled globally\n // https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html\n if (control === 'volume' && !browser.isIos && !browser.isIPadOS) {\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n volume.appendChild(\n createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n ),\n );\n }\n }\n\n // Toggle captions button\n if (control === 'captions') {\n container.appendChild(createButton.call(this, 'captions', defaultAttributes));\n }\n\n // Settings button / menu\n if (control === 'settings' && !is.empty(this.config.settings)) {\n const wrapper = createElement(\n 'div',\n extend({}, defaultAttributes, {\n class: `${defaultAttributes.class} plyr__menu`.trim(),\n hidden: '',\n }),\n );\n\n wrapper.appendChild(\n createButton.call(this, 'settings', {\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const popup = createElement('div', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n });\n\n // Create the menu\n const menu = createElement('div', {\n role: 'menu',\n });\n\n home.appendChild(menu);\n inner.appendChild(home);\n this.elements.settings.panels.home = home;\n\n // Build the menu items\n this.config.settings.forEach((type) => {\n // TODO: bundle this with the createMenuItem helper and bindings\n const menuItem = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n 'type': 'button',\n 'class': `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n 'role': 'menuitem',\n 'aria-haspopup': true,\n 'hidden': '',\n }),\n );\n\n // Bind menu shortcuts for keyboard users\n bindMenuItemShortcuts.call(this, menuItem, type);\n\n // Show menu on click\n on.call(this, menuItem, 'click', () => {\n showMenuPanel.call(this, type, false);\n });\n\n const flex = createElement('span', null, i18n.get(type, this.config));\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n flex.appendChild(value);\n menuItem.appendChild(flex);\n menu.appendChild(menuItem);\n\n // Build the panes\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n });\n\n // Back button\n const backButton = createElement('button', {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n });\n\n // Visible label\n backButton.appendChild(\n createElement(\n 'span',\n {\n 'aria-hidden': true,\n },\n i18n.get(type, this.config),\n ),\n );\n\n // Screen reader label\n backButton.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.hidden,\n },\n i18n.get('menuBack', this.config),\n ),\n );\n\n // Go back via keyboard\n on.call(\n this,\n pane,\n 'keydown',\n (event) => {\n if (event.key !== 'ArrowLeft') return;\n\n // Prevent seek\n event.preventDefault();\n event.stopPropagation();\n\n // Show the respective menu\n showMenuPanel.call(this, 'home', true);\n },\n false,\n );\n\n // Go back via button click\n on.call(this, backButton, 'click', () => {\n showMenuPanel.call(this, 'home', false);\n });\n\n // Add to pane\n pane.appendChild(backButton);\n\n // Menu\n pane.appendChild(\n createElement('div', {\n role: 'menu',\n }),\n );\n\n inner.appendChild(pane);\n\n this.elements.settings.buttons[type] = menuItem;\n this.elements.settings.panels[type] = pane;\n });\n\n popup.appendChild(inner);\n wrapper.appendChild(popup);\n container.appendChild(wrapper);\n\n this.elements.settings.popup = popup;\n this.elements.settings.menu = wrapper;\n }\n\n // Picture in picture button\n if (control === 'pip' && support.pip) {\n container.appendChild(createButton.call(this, 'pip', defaultAttributes));\n }\n\n // Airplay button\n if (control === 'airplay' && support.airplay) {\n container.appendChild(createButton.call(this, 'airplay', defaultAttributes));\n }\n\n // Download button\n if (control === 'download') {\n const attributes = extend({}, defaultAttributes, {\n element: 'a',\n href: this.download,\n target: '_blank',\n });\n\n // Set download attribute for HTML5 only\n if (this.isHTML5) {\n attributes.download = '';\n }\n\n const { download } = this.config.urls;\n\n if (!is.url(download) && this.isEmbed) {\n extend(attributes, {\n icon: `logo-${this.provider}`,\n label: this.provider,\n });\n }\n\n container.appendChild(createButton.call(this, 'download', attributes));\n }\n\n // Toggle fullscreen button\n if (control === 'fullscreen') {\n container.appendChild(createButton.call(this, 'fullscreen', defaultAttributes));\n }\n });\n\n // Set available quality levels\n if (this.isHTML5) {\n setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n // If function, run it and use output\n if (is.function(this.config.controls)) {\n this.config.controls = this.config.controls.call(this, props);\n }\n\n // Convert falsy controls to empty array (primarily for empty strings)\n if (!this.config.controls) {\n this.config.controls = [];\n }\n\n if (is.element(this.config.controls) || is.string(this.config.controls)) {\n // HTMLElement or Non-empty string passed as the option\n container = this.config.controls;\n }\n else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = (input) => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML (needs to be before captions, hence \"afterbegin\")\n const insertMethod = is.element(container) ? 'insertAdjacentElement' : 'insertAdjacentHTML';\n target[insertMethod]('afterbegin', container);\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Add pressed property to buttons\n if (!is.empty(this.elements.buttons)) {\n const addProperty = (button) => {\n const className = this.config.classNames.controlPressed;\n button.setAttribute('aria-pressed', 'false');\n\n Object.defineProperty(button, 'pressed', {\n configurable: true,\n enumerable: true,\n get() {\n return hasClass(button, className);\n },\n set(pressed = false) {\n toggleClass(button, className, pressed);\n button.setAttribute('aria-pressed', pressed ? 'true' : 'false');\n },\n });\n };\n\n // Toggle classname when pressed property is set\n Object.values(this.elements.buttons)\n .filter(Boolean)\n .forEach((button) => {\n if (is.array(button) || is.nodeList(button)) {\n Array.from(button).filter(Boolean).forEach(addProperty);\n }\n else {\n addProperty(button);\n }\n });\n }\n\n // Edge sometimes doesn't finish the paint so force a repaint\n if (browser.isEdge) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach((label) => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n });\n }\n },\n\n // Set media metadata\n setMediaMetadata() {\n try {\n if ('mediaSession' in navigator) {\n navigator.mediaSession.metadata = new window.MediaMetadata({\n title: this.config.mediaMetadata.title,\n artist: this.config.mediaMetadata.artist,\n album: this.config.mediaMetadata.album,\n artwork: this.config.mediaMetadata.artwork,\n });\n }\n }\n catch {\n // Do nothing\n }\n },\n\n // Add markers\n setMarkers() {\n if (!this.duration || this.elements.markers) return;\n\n // Get valid points\n const points = this.config.markers?.points?.filter(({ time }) => time > 0 && time < this.duration);\n if (!points?.length) return;\n\n const containerFragment = document.createDocumentFragment();\n const pointsFragment = document.createDocumentFragment();\n let tipElement = null;\n const tipVisible = `${this.config.classNames.tooltip}--visible`;\n const toggleTip = show => toggleClass(tipElement, tipVisible, show);\n\n // Inject markers to progress container\n points.forEach((point) => {\n const markerElement = createElement(\n 'span',\n {\n class: this.config.classNames.marker,\n },\n '',\n );\n\n const left = `${(point.time / this.duration) * 100}%`;\n\n if (tipElement) {\n // Show on hover\n markerElement.addEventListener('mouseenter', () => {\n if (point.label) return;\n tipElement.style.left = left;\n tipElement.innerHTML = point.label;\n toggleTip(true);\n });\n\n // Hide on leave\n markerElement.addEventListener('mouseleave', () => {\n toggleTip(false);\n });\n }\n\n markerElement.addEventListener('click', () => {\n this.currentTime = point.time;\n });\n\n markerElement.style.left = left;\n pointsFragment.appendChild(markerElement);\n });\n\n containerFragment.appendChild(pointsFragment);\n\n // Inject a tooltip if needed\n if (!this.config.tooltips.seek) {\n tipElement = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '',\n );\n\n containerFragment.appendChild(tipElement);\n }\n\n this.elements.markers = {\n points: pointsFragment,\n tip: tipElement,\n };\n\n this.elements.progress.appendChild(containerFragment);\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n }\n catch {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n this.elements.captions.setAttribute('dir', 'auto');\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach((track) => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null\n && url.hostname !== window.location.href.hostname\n && ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then((blob) => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en'];\n const languages = dedupe(browserLanguages.map(language => language.split('-')[0]));\n let language = (this.storage.get('language') || this.captions.language || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions') || this.captions.active;\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks\n .filter(track => !meta.get(track))\n .forEach((track) => {\n this.debug.log('Track added', track);\n\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n // Note: mode='hidden' forces a track to download. To ensure every track\n // isn't downloaded at once, only 'showing' tracks should be reassigned\n\n if (track.mode === 'showing') {\n track.mode = 'hidden';\n }\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n if (this.elements) {\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n }\n\n // Update available languages in list\n if (\n is.array(this.config.controls)\n && this.config.controls.includes('settings')\n && this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle button if it's enabled\n if (this.elements.buttons.captions) {\n this.elements.buttons.captions.pressed = active;\n }\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n\n // Wait for the call stack to clear before setting mode='hidden'\n // on the active track - forcing the browser to download it\n setTimeout(() => {\n if (active && this.captions.toggled) {\n this.captions.currentTrackNode.mode = 'hidden';\n }\n });\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n\n languages.every((language) => {\n track = sorted.find(t => t.language === language);\n return !track; // Break iteration if there is a match\n });\n\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Allow inline playback on iOS\n playsinline: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Force an aspect ratio\n // The format must be `'w:h'` (e.g. `'16:9'`)\n ratio: null,\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.8.3/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n // The options to display in the UI, if available for the source media\n options: [4320, 2880, 2160, 1440, 1080, 720, 576, 480, 360, 240],\n forced: false,\n onChange: null,\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n // The options to display in the UI, if available for the source media (e.g. Vimeo and YouTube only support 0.5x-4x)\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback using full viewport/window\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n // Selector for the fullscreen container so contextual / non-player content can remain visible in fullscreen mode\n // Non-ancestors of the player element will be ignored\n // container: null, // defaults to the player element\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n // 'duration',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n // 'download',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n seekLabel: '{currentTime} of {duration}',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n download: 'Download',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n pip: 'PIP',\n menuBack: 'Go back to previous menu',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n download: null,\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/oembed.json?url={0}',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api: 'https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n download: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'download',\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n\n // Quality\n 'qualitychange',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n download: '[data-plyr=\"download\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n videoFixedRatio: 'plyr__video-wrapper--fixed-ratio',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n controlPressed: 'plyr__control--pressed',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n marker: 'plyr__progress__marker',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n display: {\n time: 'plyr__time',\n },\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n previewThumbnails: {\n // Tooltip thumbs\n thumbContainer: 'plyr__preview-thumb',\n thumbContainerShown: 'plyr__preview-thumb--is-shown',\n imageContainer: 'plyr__preview-thumb__image-container',\n timeContainer: 'plyr__preview-thumb__time-container',\n // Scrubbing\n scrubbingContainer: 'plyr__preview-scrubbing',\n scrubbingContainerShown: 'plyr__preview-scrubbing--is-shown',\n },\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n hash: 'data-plyr-embed-hash',\n },\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n tagUrl: '',\n },\n\n // Preview Thumbnails plugin\n previewThumbnails: {\n enabled: false,\n src: '',\n withCredentials: false,\n },\n\n // Vimeo plugin\n vimeo: {\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: false,\n // Custom settings from Plyr\n customControls: true,\n referrerPolicy: null, // https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/referrerPolicy\n // Whether the owner of the video has a Pro or Business account\n // (which allows us to properly hide controls without CSS hacks, etc)\n premium: false,\n },\n\n // YouTube plugin\n youtube: {\n rel: 0, // No related vids\n showinfo: 0, // Hide info\n iv_load_policy: 3, // Hide annotations\n modestbranding: 1, // Hide logos as much as possible (they still show one in the corner when paused)\n // Custom settings from Plyr\n customControls: true,\n noCookie: false, // Whether to use an alternative version of YouTube without cookies\n },\n\n // Media Metadata\n mediaMetadata: {\n title: '',\n artist: '',\n album: '',\n artwork: [],\n },\n\n // Markers\n markers: {\n enabled: false,\n points: [],\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr states\n// ==========================================================================\n\nexport const pip = {\n active: 'picture-in-picture',\n inactive: 'inline',\n};\n\nexport default { pip };\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com|youtube-nocookie\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nfunction noop() {}\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n\n get warn() {\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n\n get error() {\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// https://webkit.org/blog/7929/designing-websites-for-iphone-x/\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { closest, getElements, hasClass, toggleClass } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Force the use of 'full window/browser' rather than fullscreen\n this.forceFallback = player.config.fullscreen.fallback === 'force';\n\n // Get the fullscreen element\n // Checks container is an ancestor, defaults to null\n this.player.elements.fullscreen\n = player.config.fullscreen.container && closest(this.player.elements.container, player.config.fullscreen.container);\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n this.onChange();\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', (event) => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.player.listeners.proxy(event, this.toggle, 'fullscreen');\n });\n\n // Tap focus when in fullscreen\n on.call(this, this.player.elements.container, 'keydown', event => this.trapFocus(event));\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get nativeSupported() {\n return !!(\n document.fullscreenEnabled\n || document.webkitFullscreenEnabled\n || document.mozFullScreenEnabled\n || document.msFullscreenEnabled\n );\n }\n\n // If we're actually using native\n get useNative() {\n return Fullscreen.nativeSupported && !this.forceFallback;\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) return '';\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some((pre) => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is supported\n get supported() {\n return [\n // Fullscreen is enabled in config\n this.player.config.fullscreen.enabled,\n // Must be a video\n this.player.isVideo,\n // Either native is supported or fallback enabled\n Fullscreen.nativeSupported || this.player.config.fullscreen.fallback,\n // YouTube has no way to trigger fullscreen, so on devices with no native support, playsinline\n // must be enabled and iosNative fullscreen must be disabled to offer the fullscreen fallback\n !this.player.isYouTube\n || Fullscreen.nativeSupported\n || !browser.isIos\n || (this.player.config.playsinline && !this.player.config.fullscreen.iosNative),\n ].every(Boolean);\n }\n\n // Get active state\n get active() {\n if (!this.supported) return false;\n\n // Fallback using classname\n if (!Fullscreen.nativeSupported || this.forceFallback) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix\n ? this.target.getRootNode().fullscreenElement\n : this.target.getRootNode()[`${this.prefix}${this.property}Element`];\n\n return element && element.shadowRoot ? element === this.target.getRootNode().host : element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.fullscreen ?? this.player.elements.container;\n }\n\n onChange = () => {\n if (!this.supported) return;\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n button.pressed = this.active;\n }\n\n // Always trigger events on the plyr / media element (not a fullscreen container) and let them bubble up\n const target = this.target === this.player.media ? this.target : this.player.elements.container;\n // Trigger an event\n triggerEvent.call(this.player, target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n };\n\n toggleFallback = (toggle = false) => {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX ?? 0,\n y: window.scrollY ?? 0,\n };\n }\n else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Force full viewport on iPhone X+\n if (browser.isIos) {\n let viewport = document.head.querySelector('meta[name=\"viewport\"]');\n const property = 'viewport-fit=cover';\n\n // Inject the viewport meta if required\n if (!viewport) {\n viewport = document.createElement('meta');\n viewport.setAttribute('name', 'viewport');\n }\n\n // Check if the property already exists\n const hasProperty = is.string(viewport.content) && viewport.content.includes(property);\n\n if (toggle) {\n this.cleanupViewport = !hasProperty;\n if (!hasProperty) viewport.content += `,${property}`;\n }\n else if (this.cleanupViewport) {\n viewport.content = viewport.content\n .split(',')\n .filter(part => part.trim() !== property)\n .join(',');\n }\n }\n\n // Toggle button and fire events\n this.onChange();\n };\n\n // Trap focus inside container\n trapFocus = (event) => {\n // Bail if iOS/iPadOS, not active, not the tab key\n if (browser.isIos || browser.isIPadOS || !this.active || event.key !== 'Tab') return;\n\n // Get the current focused element\n const focused = document.activeElement;\n const focusable = getElements.call(this.player, 'a[href], button:not(:disabled), input:not(:disabled), [tabindex]');\n const [first] = focusable;\n const last = focusable[focusable.length - 1];\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n }\n else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n // Update UI\n update = () => {\n if (this.supported) {\n let mode;\n\n if (this.forceFallback) mode = 'Fallback (forced)';\n else if (Fullscreen.nativeSupported) mode = 'Native';\n else mode = 'Fallback';\n\n this.player.debug.log(`${mode} fullscreen enabled`);\n }\n else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.supported);\n };\n\n // Make an element fullscreen\n enter = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.requestFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(true);\n }\n else if (!this.prefix) {\n this.target.requestFullscreen({ navigationUI: 'hide' });\n }\n else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n };\n\n // Bail from fullscreen\n exit = () => {\n if (!this.supported) return;\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.isVimeo) {\n this.player.embed.exitFullscreen();\n }\n else {\n this.target.webkitEnterFullscreen();\n }\n silencePromise(this.player.play());\n }\n else if (!Fullscreen.nativeSupported || this.forceFallback) {\n this.toggleFallback(false);\n }\n else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n }\n else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n };\n\n // Toggle state\n toggle = () => {\n if (!this.active) this.enter();\n else this.exit();\n };\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport support from './support';\nimport { getElement, toggleClass } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadImage from './utils/load-image';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n }\n else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Reset duration display\n controls.durationUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n\n // Media metadata\n if (this.config.mediaMetadata) {\n controls.setMediaMetadata.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n }\n\n // If there's a play button, set label\n Array.from(this.elements.buttons.play || []).forEach((button) => {\n button.setAttribute('aria-label', label);\n });\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('data-poster', poster);\n\n // Show the poster\n this.elements.poster.removeAttribute('hidden');\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch((error) => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw error;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n\n ui.togglePoster.call(this, true);\n\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set state\n Array.from(this.elements.buttons.play || []).forEach((target) => {\n Object.assign(target, { pressed: this.playing });\n target.setAttribute('aria-label', i18n.get(this.playing ? 'pause' : 'play', this.config));\n });\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(\n () => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n },\n this.loading ? 250 : 0,\n );\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls: controlsElement } = this.elements;\n\n if (controlsElement && this.config.hideControls) {\n // Don't hide controls if a touch-device user recently seeked. (Must be limited to touch devices, or it occasionally prevents desktop controls from hiding.)\n const recentTouchSeek = this.touch && this.lastSeekTime + 2000 > Date.now();\n\n // Show controls if force, loading, paused, button interaction, or recent seek, otherwise hide\n this.toggleControls(\n Boolean(\n force || this.loading || this.paused || controlsElement.pressed || controlsElement.hover || recentTouchSeek,\n ),\n );\n }\n },\n\n // Migrate any custom properties from the media to the parent\n migrateStyles() {\n // Loop through values (as they are the keys when the object is spread 🤔)\n Object.values({ ...this.media.style })\n // We're only fussed about Plyr specific properties\n .filter(key => !is.empty(key) && is.string(key) && key.startsWith('--plyr'))\n .forEach((key) => {\n // Set on the container\n this.elements.container.style.setProperty(key, this.media.style.getPropertyValue(key));\n\n // Clean up from media element\n this.media.style.removeProperty(key);\n });\n\n // Remove attribute if empty\n if (is.empty(this.media.style)) {\n this.media.removeAttribute('style');\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { silencePromise } from './utils/promise';\nimport { getAspectRatio, getViewportSize, supportsCSS } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const { key, type, altKey, ctrlKey, metaKey, shiftKey } = event;\n const pressed = type === 'keydown';\n const repeat = pressed && key === this.lastKey;\n\n // Bail if a modifier key is set\n if (altKey || ctrlKey || metaKey || shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the key for whatever reason\n if (!key) {\n return;\n }\n\n // Seek by increment\n const seekByIncrement = (increment) => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * increment;\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.key === ' ' && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keys should we prevent default\n const preventDefault = [\n ' ',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n\n 'c',\n 'f',\n 'k',\n 'l',\n 'm',\n ];\n\n // If the key is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (key) {\n case '0':\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n if (!repeat) {\n seekByIncrement(Number.parseInt(key, 10));\n }\n break;\n\n case ' ':\n case 'k':\n if (!repeat) {\n silencePromise(player.togglePlay());\n }\n break;\n\n case 'ArrowUp':\n player.increaseVolume(0.1);\n break;\n\n case 'ArrowDown':\n player.decreaseVolume(0.1);\n break;\n\n case 'm':\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 'ArrowRight':\n player.forward();\n break;\n\n case 'ArrowLeft':\n player.rewind();\n break;\n\n case 'f':\n player.fullscreen.toggle();\n break;\n\n case 'c':\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 'l':\n player.loop = !player.loop;\n break;\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (key === 'Escape' && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last key for next cycle\n this.lastKey = key;\n }\n else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch = () => {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n };\n\n // Global window & document listeners\n global = (toggle = true) => {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n };\n\n // Container listeners\n container = () => {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n (event) => {\n const { controls: controlsElement } = elements;\n\n // Remove button states for fullscreen\n if (controlsElement && event.type === 'enterfullscreen') {\n controlsElement.pressed = false;\n controlsElement.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Set a gutter for Vimeo\n const setGutter = () => {\n if (!player.isVimeo || player.config.vimeo.premium) {\n return;\n }\n\n const target = elements.wrapper;\n const { active } = player.fullscreen;\n const [videoWidth, videoHeight] = getAspectRatio.call(player);\n const useNativeAspectRatio = supportsCSS(`aspect-ratio: ${videoWidth} / ${videoHeight}`);\n\n // If not active, remove styles\n if (!active) {\n if (useNativeAspectRatio) {\n target.style.width = null;\n target.style.height = null;\n }\n else {\n target.style.maxWidth = null;\n target.style.margin = null;\n }\n return;\n }\n\n // Determine which dimension will overflow and constrain view\n const [viewportWidth, viewportHeight] = getViewportSize();\n const overflow = viewportWidth / viewportHeight > videoWidth / videoHeight;\n\n if (useNativeAspectRatio) {\n target.style.width = overflow ? 'auto' : '100%';\n target.style.height = overflow ? '100%' : 'auto';\n }\n else {\n target.style.maxWidth = overflow ? `${(viewportHeight / videoHeight) * videoWidth}px` : null;\n target.style.margin = overflow ? '0 auto' : null;\n }\n };\n\n // Handle resizing\n const resized = () => {\n clearTimeout(timers.resized);\n timers.resized = setTimeout(setGutter, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', (event) => {\n const { target } = player.fullscreen;\n\n // Ignore events not from target\n if (target !== elements.container) {\n return;\n }\n\n // If it's not an embed and no ratio specified\n if (!player.isEmbed && is.empty(player.config.ratio)) {\n return;\n }\n\n // Set Vimeo gutter\n setGutter();\n\n // Watch for resizes\n const method = event.type === 'enterfullscreen' ? on : off;\n method.call(player, window, 'resize', resized);\n });\n };\n\n // Listen for media events\n media = () => {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event));\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n\n // Call pause otherwise IE11 will start playing the video again\n player.pause();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event));\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event));\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', (event) => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(\n event,\n () => {\n silencePromise(player.play());\n },\n 'play',\n );\n }\n else {\n this.proxy(\n event,\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n (event) => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', (event) => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadUrl.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, (event) => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n };\n\n // Run default and custom handlers\n proxy = (event, defaultHandler, customHandlerKey) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned !== false && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n };\n\n // Trigger custom and default handlers\n bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n };\n\n // Listen for control events\n controls = () => {\n const { player } = this;\n const { elements } = player;\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach((button) => {\n this.bind(\n button,\n 'click',\n () => {\n silencePromise(player.togglePlay());\n },\n 'play',\n );\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(\n elements.buttons.rewind,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after rewind\n player.lastSeekTime = Date.now();\n player.rewind();\n },\n 'rewind',\n );\n\n // Rewind\n this.bind(\n elements.buttons.fastForward,\n 'click',\n () => {\n // Record seek time so we can prevent hiding controls for a few seconds after fast forward\n player.lastSeekTime = Date.now();\n player.forward();\n },\n 'fastForward',\n );\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(\n elements.buttons.settings,\n 'click',\n (event) => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n event.preventDefault();\n\n controls.toggleMenu.call(player, event);\n },\n null,\n false,\n ); // Can't be passive as we're preventing default\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n (event) => {\n if (![' ', 'Enter'].includes(event.key)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (event.key === 'Enter') {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', (event) => {\n if (event.key === 'Escape') {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', (event) => {\n const rect = elements.progress.getBoundingClientRect();\n const scrollLeft = event.pageX - event.clientX;\n const percent = (100 / rect.width) * (event.pageX - rect.left - scrollLeft);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', (event) => {\n const seek = event.currentTarget;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && !['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n silencePromise(player.play());\n }\n else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n (event) => {\n const seek = event.currentTarget;\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event));\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave touchend click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', (event) => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebKit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach((element) => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n (event) => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', (event) => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Also update controls.hover state for any non-player children of fullscreen element (as above)\n if (elements.fullscreen) {\n Array.from(elements.fullscreen.children)\n .filter(c => !c.contains(elements.container))\n .forEach((child) => {\n this.bind(child, 'mouseenter mouseleave', (event) => {\n if (elements.controls) {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n }\n });\n });\n }\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', (event) => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n (event) => {\n // Detect \"natural\" scroll - supported on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n };\n}\n\nexport default Listeners;\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/load-script';\nimport { format, stripHTML } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n // eslint-disable-next-line regexp/optimal-quantifier-concatenation\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n const match = url.match(regex);\n return match ? match[2] : url;\n}\n\n// Try to extract a hash for private videos from the URL\nfunction parseHash(url) {\n /* This regex matches a hexadecimal hash if given in any of these forms:\n * - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms]\n * - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n * - video/{id}/{hash}\n * If matched, the hash is available in capture group 4\n */\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+)(\\?.*h=|\\/)+([\\d,a-f]+)/;\n const found = url.match(regex);\n\n return found && found.length === 5 ? found[4] : null;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n const player = this;\n\n // Add embed class for responsive\n toggleClass(player.elements.wrapper, player.config.classNames.embed, true);\n\n // Set speed options from config\n player.options.speed = player.config.speed.options;\n\n // Set initial ratio\n setAspectRatio.call(player);\n\n // Load the SDK if not already\n if (!is.object(window.Vimeo)) {\n loadScript(player.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(player);\n })\n .catch((error) => {\n player.debug.warn('Vimeo SDK (player.js) failed to load', error);\n });\n }\n else {\n vimeo.ready.call(player);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n const { premium, referrerPolicy, ...frameParams } = config;\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n let hash = '';\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n // hash can also be set as attribute on the
\n hash = player.media.getAttribute(player.config.attributes.embed.hash);\n }\n else {\n hash = parseHash(source);\n }\n const hashParam = hash ? { h: hash } : {};\n\n // If the owner has a pro or premium account then we can hide controls etc\n if (premium) {\n Object.assign(frameParams, {\n controls: false,\n sidedock: false,\n });\n }\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams({\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: player.config.playsinline,\n // hash has to be added to iframe-URL\n ...hashParam,\n ...frameParams,\n });\n\n const id = parseId(source);\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute(\n 'allow',\n ['autoplay', 'fullscreen', 'picture-in-picture', 'encrypted-media', 'accelerometer', 'gyroscope'].join('; '),\n );\n\n // Set the referrer policy if required\n if (!is.empty(referrerPolicy)) {\n iframe.setAttribute('referrerPolicy', referrerPolicy);\n }\n\n // Inject the package\n if (premium || !config.customControls) {\n iframe.setAttribute('data-poster', player.poster);\n player.media = replaceElement(iframe, player.media);\n }\n else {\n const wrapper = createElement('div', {\n 'class': player.config.classNames.embedContainer,\n 'data-poster': player.poster,\n });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n }\n\n // Get poster image\n if (!config.customControls) {\n fetch(format(player.config.urls.vimeo.api, src)).then((response) => {\n if (is.empty(response) || !response.thumbnail_url) {\n return;\n }\n\n // Set and show poster\n ui.setPoster.call(player, response.thumbnail_url).catch(() => {});\n });\n }\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(() => {\n // Cannot set Playback Rate, Video is probably not on Pro account\n player.options.speed = [1];\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setMuted(toggle ? true : player.config.muted).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then((value) => {\n currentSrc = value;\n controls.setDownloadUrl.call(player);\n })\n .catch((error) => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then((dimensions) => {\n const [width, height] = dimensions;\n player.embed.ratio = roundAspectRatio(width, height);\n setAspectRatio.call(this);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then((state) => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then((title) => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then((value) => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then((value) => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then((tracks) => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then((paused) => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('bufferstart', () => {\n triggerEvent.call(player, player.media, 'waiting');\n });\n\n player.embed.on('bufferend', () => {\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', (data) => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', (data) => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (Number.parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then((value) => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', (detail) => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n if (config.customControls) {\n setTimeout(() => ui.build.call(player), 0);\n }\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/load-image';\nimport loadScript from '../utils/load-script';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { roundAspectRatio, setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = url.match(regex);\n return match && match[2] ? match[2] : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nfunction getHost(config) {\n if (config.noCookie) {\n return 'https://www.youtube-nocookie.com';\n }\n\n if (window.location.protocol === 'http:') {\n return 'http://www.youtube.com';\n }\n\n // Use YouTube's default\n return undefined;\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n }\n else {\n // Reference current global callback\n const callback = window.onYouTubeIframeAPIReady;\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n // Call global callback if set\n if (is.function(callback)) {\n callback();\n }\n\n youtube.ready.call(this);\n };\n\n // Load the SDK\n loadScript(this.config.urls.youtube.sdk).catch((error) => {\n this.debug.warn('YouTube API failed to load', error);\n });\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n const url = format(this.config.urls.youtube.api, videoId);\n\n fetch(url)\n .then((data) => {\n if (is.object(data)) {\n const { title, height, width } = data;\n\n // Set title\n this.config.title = title;\n ui.setTitle.call(this);\n\n // Set aspect ratio\n this.embed.ratio = roundAspectRatio(width, height);\n }\n\n setAspectRatio.call(this);\n })\n .catch(() => {\n // Set aspect ratio\n setAspectRatio.call(this);\n });\n },\n\n // API ready\n ready() {\n const player = this;\n const config = player.config.youtube;\n // Ignore already setup (race condition)\n const currentId = player.media && player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the